refactor(significant_digits): obsolete temp value
also use the correct value for if all digits are significant, since we filter out the dot(s). in practice though, this is very rare.
This commit is contained in:
parent
f9d4290659
commit
6e141a0132
1 changed files with 5 additions and 8 deletions
13
src/main.rs
13
src/main.rs
|
|
@ -30,7 +30,6 @@ pub fn parse_and_calc(s: &str) -> Float {
|
||||||
pub fn get_significant_digits(n: &Float) -> usize {
|
pub fn get_significant_digits(n: &Float) -> usize {
|
||||||
let raw_string: String = format!("{n}").chars().filter(|c| *c != '.').collect();
|
let raw_string: String = format!("{n}").chars().filter(|c| *c != '.').collect();
|
||||||
|
|
||||||
let mut significant_digits = raw_string.len() - 1;
|
|
||||||
let mut consecutive_zeros = 0;
|
let mut consecutive_zeros = 0;
|
||||||
let mut consecutive_nines = 0;
|
let mut consecutive_nines = 0;
|
||||||
for (i, c) in raw_string.char_indices() {
|
for (i, c) in raw_string.char_indices() {
|
||||||
|
|
@ -47,20 +46,18 @@ pub fn get_significant_digits(n: &Float) -> usize {
|
||||||
}
|
}
|
||||||
|
|
||||||
if consecutive_zeros >= 10 {
|
if consecutive_zeros >= 10 {
|
||||||
significant_digits = i + 1 - consecutive_zeros;
|
return i + 1 - consecutive_zeros;
|
||||||
break;
|
|
||||||
} else if consecutive_nines >= 10 {
|
} else if consecutive_nines >= 10 {
|
||||||
significant_digits = i + 1 - consecutive_nines;
|
return i + 1 - consecutive_nines;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if !raw_string[i..raw_string.len()].contains(|c| matches!(c, '1'..='9')) {
|
if !raw_string[i..raw_string.len()].contains(|c| matches!(c, '1'..='9')) {
|
||||||
significant_digits = i;
|
return i;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
significant_digits
|
// all digits are significant
|
||||||
|
raw_string.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue