about summary refs log tree commit diff
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2021-10-05 12:52:46 -0700
committerGitHub <noreply@github.com>2021-10-05 12:52:46 -0700
commit4e8c853c9e419d70c3017683816af41db2f7a580 (patch)
tree955c7df62ad5c8385b9798b7e758d1099dd6f1a4
parent80f1f0d1690344b402762a76205c11fd08d9b593 (diff)
parent199b33f0d77c3fae1c2c982029df7168899f8aba (diff)
Rollup merge of #89502 - FabianWolff:issue-89493, r=joshtriplett
Fix Lower/UpperExp formatting for integers and precision zero

Fixes the integer part of #89493 (I daren't touch the floating-point formatting code). The issue is that the "subtracted" precision essentially behaves like extra trailing zeros, but this is not currently reflected in the code properly.
-rw-r--r--library/core/src/fmt/num.rs3
-rw-r--r--library/core/tests/fmt/num.rs1
2 files changed, 2 insertions, 2 deletions
diff --git a/library/core/src/fmt/num.rs b/library/core/src/fmt/num.rs
index db45640df48..05ca50a97a6 100644
--- a/library/core/src/fmt/num.rs
+++ b/library/core/src/fmt/num.rs
@@ -305,7 +305,6 @@ macro_rules! impl_Exp {
                     n /= 10;
                     exponent += 1;
                 }
-                let trailing_zeros = exponent;
 
                 let (added_precision, subtracted_precision) = match f.precision() {
                     Some(fmt_prec) => {
@@ -333,7 +332,7 @@ macro_rules! impl_Exp {
                         n += 1;
                     }
                 }
-                (n, exponent, trailing_zeros, added_precision)
+                (n, exponent, exponent, added_precision)
             };
 
             // 39 digits (worst case u128) + . = 40
diff --git a/library/core/tests/fmt/num.rs b/library/core/tests/fmt/num.rs
index 275a1d062ca..b958422d14f 100644
--- a/library/core/tests/fmt/num.rs
+++ b/library/core/tests/fmt/num.rs
@@ -146,6 +146,7 @@ fn test_format_int_exp_precision() {
     assert_eq!(format!("{:.1000e}", 1), format!("1.{}e0", "0".repeat(1000)));
     //test zero precision
     assert_eq!(format!("{:.0e}", 1), format!("1e0",));
+    assert_eq!(format!("{:.0e}", 35), format!("4e1",));
 
     //test padding with precision (and sign)
     assert_eq!(format!("{:+10.3e}", 1), "  +1.000e0");