feat: trim out consective zeros
instead of clamping the number of significant digits fixes `tylc "14.00643 + 1.00784 * 4 + 35.446 + 15.9994 * 4"`
This commit is contained in:
parent
42ccff8b12
commit
909bcfef6d
1 changed files with 14 additions and 2 deletions
16
src/main.rs
16
src/main.rs
|
|
@ -16,7 +16,19 @@ pub fn get_significant_digits(n: &Float) -> usize {
|
|||
let raw_string = format!("{n}");
|
||||
|
||||
let mut significant_digits = raw_string.len() - 1;
|
||||
for (i, _) in raw_string.char_indices() {
|
||||
let mut consecutive_zeros = 0;
|
||||
for (i, c) in raw_string.char_indices() {
|
||||
if c == '0' {
|
||||
consecutive_zeros += 1;
|
||||
} else {
|
||||
consecutive_zeros = 0;
|
||||
}
|
||||
|
||||
if consecutive_zeros >= 10 {
|
||||
significant_digits = i - consecutive_zeros;
|
||||
break;
|
||||
}
|
||||
|
||||
if !raw_string[i..raw_string.len()].contains(|c| matches!(c, '1'..'9')) {
|
||||
significant_digits = i;
|
||||
break;
|
||||
|
|
@ -38,5 +50,5 @@ fn main() {
|
|||
|
||||
let result = parse_and_calc(&input);
|
||||
|
||||
println!("{result:.0$}", get_significant_digits(&result).clamp(0, 6));
|
||||
println!("{result:.0$}", get_significant_digits(&result));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue