refinements
authorBen Pfaff <blp@cs.stanford.edu>
Fri, 21 Mar 2025 02:51:50 +0000 (19:51 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Fri, 21 Mar 2025 02:51:50 +0000 (19:51 -0700)
rust/pspp/src/format/mod.rs

index f53f9d4bca13d7db9a6a222276c46dee1e83099e..eda362098779c6081412783f66eef312457e6635 100644 (file)
@@ -1352,24 +1352,11 @@ impl<'a> DisplayValue<'a> {
             static ZEROS: &str = "0000000000000000000000000000000000000000";
             &ZEROS[..n]
         }
-        fn is_all_zeros(s: &[u8]) -> bool {
-            s.iter().all(|b| *b == b'0')
-        }
 
         if exponent >= 0 && exponent < digits.len() as i32 {
             // The first `exponent` digits are before the decimal point.  We
             // need to round off there.
             let exp = exponent as usize;
-            let should_round_up = match digits[exp] {
-                /*
-                b'5' if is_all_zeros(&digits[exp + 1..]) => {
-                    let prev_digit = if exp > 0 { digits[exp - 1] - b'0' } else { 0 };
-                    (prev_digit % 2) == 1
-                }*/
-                b'0'..=b'4' => false,
-                b'5'..=b'9' => true,
-                _ => unreachable!(),
-            };
 
             fn round_up(digits: &mut [u8], position: usize) -> bool {
                 for index in (0..position).rev() {
@@ -1387,7 +1374,7 @@ impl<'a> DisplayValue<'a> {
                 false
             }
 
-            if should_round_up && !round_up(digits, exp) {
+            if digits[exp] >= b'5' && !round_up(digits, exp) {
                 s[0] = b'1';
                 digits = &mut s[..e_index];
                 exponent += 1;