pub fn truncate(number: f64, n: usize) -> f64 {
let s = number.to_string();
let mut n = n;
match s.find(".") {
Some(i) => {
if n > s[i + 1..].len() {
n = s[i + 1..].len();
}
let int_str = &s[0..i];
let float_str = &s[i..i + n + 1];
let num_str = int_str.to_owned() + float_str;
let result: f64 = num_str.parse().unwrap();
result
}
None => number,
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_truncate() {
assert_eq!(0.0, truncate(0.1234, 0));
assert_eq!(0.1, truncate(0.1234, 1));
assert_eq!(0.12, truncate(0.1234, 2));
assert_eq!(0.123, truncate(0.1234, 3));
assert_eq!(0.1234, truncate(0.1234, 4));
assert_eq!(0.1234, truncate(0.1234, 5));
}
}