diff --git a/src/uu/numfmt/src/format.rs b/src/uu/numfmt/src/format.rs index 61c45b2fa..a6c88eb37 100644 --- a/src/uu/numfmt/src/format.rs +++ b/src/uu/numfmt/src/format.rs @@ -628,7 +628,7 @@ fn transform_to( "{:.precision$}", round_with_precision(i2, round_method, precision), )), - None if is_precision_specified => { + None if is_precision_specified && precision <= u16::MAX.into() => { let i2 = round_with_precision(i2, round_method, 0); localize(format!("{i2:.precision$}")) } diff --git a/tests/by-util/test_numfmt.rs b/tests/by-util/test_numfmt.rs index ba2560a82..7e6f940bc 100644 --- a/tests/by-util/test_numfmt.rs +++ b/tests/by-util/test_numfmt.rs @@ -1627,3 +1627,11 @@ fn test_multibyte_suffix_issue11937() { .succeeds() .stdout_is(" 692.00€\n"); } + +#[test] +fn test_float_precision_greater_than_16bits() { + new_ucmd!() + .args(&["--to=iec", "--format=%.65536f", "1"]) + .succeeds() + .stdout_is("1\n"); +}