From 0fdefc3767a00a7047948d27e5f17ff334c0d489 Mon Sep 17 00:00:00 2001 From: maxer137 Date: Fri, 5 Apr 2024 15:01:18 +0200 Subject: [PATCH] seq: remove zero padding from `parse_decimal_and_exponent` This adds the same fix applied to `parse_exponent_no_decimal`. This way we don't need to create large strings --- src/uu/seq/src/numberparse.rs | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/src/uu/seq/src/numberparse.rs b/src/uu/seq/src/numberparse.rs index 0ac1f93c9..5a5c64bb9 100644 --- a/src/uu/seq/src/numberparse.rs +++ b/src/uu/seq/src/numberparse.rs @@ -206,7 +206,11 @@ fn parse_decimal_and_exponent( let minimum: usize = { let integral_part: f64 = s[..j].parse().map_err(|_| ParseNumberError::Float)?; if integral_part.is_sign_negative() { - 2 + if exponent > 0 { + 2usize + exponent as usize + } else { + 2usize + } } else { 1 } @@ -233,30 +237,7 @@ fn parse_decimal_and_exponent( .unwrap() }; - if num_digits_between_decimal_point_and_e <= exponent { - if is_minus_zero_float(s, &val) { - Ok(PreciseNumber::new( - ExtendedBigDecimal::MinusZero, - num_integral_digits, - num_fractional_digits, - )) - } else { - let zeros: String = "0".repeat( - (exponent - num_digits_between_decimal_point_and_e) - .try_into() - .unwrap(), - ); - let expanded = [&s[0..i], &s[i + 1..j], &zeros].concat(); - let n = expanded - .parse::() - .map_err(|_| ParseNumberError::Float)?; - Ok(PreciseNumber::new( - ExtendedBigDecimal::BigDecimal(n), - num_integral_digits, - num_fractional_digits, - )) - } - } else if is_minus_zero_float(s, &val) { + if is_minus_zero_float(s, &val) { Ok(PreciseNumber::new( ExtendedBigDecimal::MinusZero, num_integral_digits,