diff --git a/src/uu/numfmt/src/format.rs b/src/uu/numfmt/src/format.rs index 5933092f6..b62508259 100644 --- a/src/uu/numfmt/src/format.rs +++ b/src/uu/numfmt/src/format.rs @@ -281,12 +281,12 @@ fn transform_to( format!( "{:.precision$}{}", i2, - DisplayableSuffix(s), + DisplayableSuffix(s, opts.to), precision = precision ) } - Some(s) if i2.abs() < 10.0 => format!("{:.1}{}", i2, DisplayableSuffix(s)), - Some(s) => format!("{:.0}{}", i2, DisplayableSuffix(s)), + Some(s) if i2.abs() < 10.0 => format!("{:.1}{}", i2, DisplayableSuffix(s, opts.to)), + Some(s) => format!("{:.0}{}", i2, DisplayableSuffix(s, opts.to)), }) } diff --git a/src/uu/numfmt/src/units.rs b/src/uu/numfmt/src/units.rs index 585bae461..c52dee20c 100644 --- a/src/uu/numfmt/src/units.rs +++ b/src/uu/numfmt/src/units.rs @@ -45,20 +45,21 @@ pub enum RawSuffix { pub type Suffix = (RawSuffix, WithI); -pub struct DisplayableSuffix(pub Suffix); +pub struct DisplayableSuffix(pub Suffix, pub Unit); impl fmt::Display for DisplayableSuffix { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let Self((ref raw_suffix, ref with_i)) = *self; - match raw_suffix { - RawSuffix::K => write!(f, "K"), - RawSuffix::M => write!(f, "M"), - RawSuffix::G => write!(f, "G"), - RawSuffix::T => write!(f, "T"), - RawSuffix::P => write!(f, "P"), - RawSuffix::E => write!(f, "E"), - RawSuffix::Z => write!(f, "Z"), - RawSuffix::Y => write!(f, "Y"), + let Self((ref raw_suffix, ref with_i), unit) = *self; + match (raw_suffix, unit) { + (RawSuffix::K, Unit::Si) => write!(f, "k"), + (RawSuffix::K, _) => write!(f, "K"), + (RawSuffix::M, _) => write!(f, "M"), + (RawSuffix::G, _) => write!(f, "G"), + (RawSuffix::T, _) => write!(f, "T"), + (RawSuffix::P, _) => write!(f, "P"), + (RawSuffix::E, _) => write!(f, "E"), + (RawSuffix::Z, _) => write!(f, "Z"), + (RawSuffix::Y, _) => write!(f, "Y"), } .and_then(|()| match with_i { true => write!(f, "i"),