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:
electria 2026-07-20 19:22:33 -07:00
commit 909bcfef6d
Signed by: electria
SSH key fingerprint: SHA256:8LlB3ucPbBHqozqkhsNbaV5oG3SlzzqUj8FZDL6IPQs

View file

@ -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));
}