From eaa8332be4f6296953647a25f073f0b613e52243 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Tue, 1 Apr 2025 15:02:30 +0200 Subject: [PATCH 1/3] Bump bigdecimal from 0.4.7 to 0.4.8 --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 60c7abfba..d9dfcf8ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -126,9 +126,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "bigdecimal" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f31f3af01c5c65a07985c804d3366560e6fa7883d640a122819b14ec327482c" +checksum = "1a22f228ab7a1b23027ccc6c350b72868017af7ea8356fbdf19f8d991c690013" dependencies = [ "autocfg", "libm", From 636e4a777b01b66a87fa3afe845601a49198f1aa Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Tue, 1 Apr 2025 15:37:24 +0200 Subject: [PATCH 2/3] uucore/format: remove Display impl of ExtendedBigDecimal --- .../lib/features/format/extendedbigdecimal.rs | 32 ------------------- 1 file changed, 32 deletions(-) diff --git a/src/uucore/src/lib/features/format/extendedbigdecimal.rs b/src/uucore/src/lib/features/format/extendedbigdecimal.rs index b5762e000..07c8b4621 100644 --- a/src/uucore/src/lib/features/format/extendedbigdecimal.rs +++ b/src/uucore/src/lib/features/format/extendedbigdecimal.rs @@ -21,7 +21,6 @@ //! assert_eq!(summand1 + summand2, ExtendedBigDecimal::Infinity); //! ``` use std::cmp::Ordering; -use std::fmt::Display; use std::ops::Add; use std::ops::Neg; @@ -110,25 +109,6 @@ impl ExtendedBigDecimal { } } -impl Display for ExtendedBigDecimal { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Self::BigDecimal(x) => { - let (n, p) = x.as_bigint_and_exponent(); - match p { - 0 => Self::BigDecimal(BigDecimal::new(n * 10, 1)).fmt(f), - _ => x.fmt(f), - } - } - Self::Infinity => f32::INFINITY.fmt(f), - Self::MinusInfinity => f32::NEG_INFINITY.fmt(f), - Self::MinusZero => (-0.0f32).fmt(f), - Self::Nan => "nan".fmt(f), - Self::MinusNan => "-nan".fmt(f), - } - } -} - impl Zero for ExtendedBigDecimal { fn zero() -> Self { Self::BigDecimal(BigDecimal::zero()) @@ -281,16 +261,4 @@ mod tests { _ => unreachable!(), } } - - #[test] - fn test_display() { - assert_eq!( - format!("{}", ExtendedBigDecimal::BigDecimal(BigDecimal::zero())), - "0.0" - ); - assert_eq!(format!("{}", ExtendedBigDecimal::Infinity), "inf"); - assert_eq!(format!("{}", ExtendedBigDecimal::MinusInfinity), "-inf"); - assert_eq!(format!("{}", ExtendedBigDecimal::Nan), "nan"); - assert_eq!(format!("{}", ExtendedBigDecimal::MinusZero), "-0"); - } } From 60ebace7f2cfb280d13573838540b423ebe365a7 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Tue, 1 Apr 2025 17:15:59 +0200 Subject: [PATCH 3/3] uucore/format: remove TODOs related to bigdecimal --- src/uucore/src/lib/features/format/num_format.rs | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/uucore/src/lib/features/format/num_format.rs b/src/uucore/src/lib/features/format/num_format.rs index b636744df..9e509b09c 100644 --- a/src/uucore/src/lib/features/format/num_format.rs +++ b/src/uucore/src/lib/features/format/num_format.rs @@ -246,13 +246,7 @@ impl Formatter<&ExtendedBigDecimal> for Float { */ let (abs, negative) = match e { ExtendedBigDecimal::BigDecimal(bd) => { - // Workaround printing bug in BigDecimal, force 0 to scale 0. - // TODO: Remove after https://github.com/akubera/bigdecimal-rs/issues/144 is fixed. - if bd.is_zero() { - (ExtendedBigDecimal::zero(), false) - } else { - (ExtendedBigDecimal::BigDecimal(bd.abs()), bd.is_negative()) - } + (ExtendedBigDecimal::BigDecimal(bd.abs()), bd.is_negative()) } ExtendedBigDecimal::MinusZero => (ExtendedBigDecimal::zero(), true), ExtendedBigDecimal::Infinity => (ExtendedBigDecimal::Infinity, false), @@ -730,12 +724,8 @@ mod test { } #[test] - #[ignore = "Need https://github.com/akubera/bigdecimal-rs/issues/144 to be fixed"] fn decimal_float_zero() { use super::format_float_decimal; - // We've had issues with "0e10"/"0e-10" formatting. - // TODO: Enable after https://github.com/akubera/bigdecimal-rs/issues/144 is fixed, - // as our workaround is in .fmt. let f = |digits, scale| { format_float_decimal(&BigDecimal::from_bigint(digits, scale), 6, ForceDecimal::No) };