Skip to content

Commit aa9837b

Browse files
committed
Add tests for rounding of ties during float formatting
1 parent 8487444 commit aa9837b

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed

library/core/tests/fmt/float.rs

+120
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,66 @@ fn test_format_f64() {
2424
assert_eq!("1234.6", format!("{:.1?}", 1234.56789f64));
2525
}
2626

27+
#[test]
28+
fn test_format_f64_rounds_ties_to_even() {
29+
assert_eq!("0", format!("{:.0}", 0.5f64));
30+
assert_eq!("2", format!("{:.0}", 1.5f64));
31+
assert_eq!("2", format!("{:.0}", 2.5f64));
32+
assert_eq!("4", format!("{:.0}", 3.5f64));
33+
assert_eq!("4", format!("{:.0}", 4.5f64));
34+
assert_eq!("6", format!("{:.0}", 5.5f64));
35+
assert_eq!("128", format!("{:.0}", 127.5f64));
36+
assert_eq!("128", format!("{:.0}", 128.5f64));
37+
assert_eq!("0.2", format!("{:.1}", 0.25f64));
38+
assert_eq!("0.8", format!("{:.1}", 0.75f64));
39+
assert_eq!("0.12", format!("{:.2}", 0.125f64));
40+
assert_eq!("0.88", format!("{:.2}", 0.875f64));
41+
assert_eq!("0.062", format!("{:.3}", 0.062f64));
42+
assert_eq!("-0", format!("{:.0}", -0.5f64));
43+
assert_eq!("-2", format!("{:.0}", -1.5f64));
44+
assert_eq!("-2", format!("{:.0}", -2.5f64));
45+
assert_eq!("-4", format!("{:.0}", -3.5f64));
46+
assert_eq!("-4", format!("{:.0}", -4.5f64));
47+
assert_eq!("-6", format!("{:.0}", -5.5f64));
48+
assert_eq!("-128", format!("{:.0}", -127.5f64));
49+
assert_eq!("-128", format!("{:.0}", -128.5f64));
50+
assert_eq!("-0.2", format!("{:.1}", -0.25f64));
51+
assert_eq!("-0.8", format!("{:.1}", -0.75f64));
52+
assert_eq!("-0.12", format!("{:.2}", -0.125f64));
53+
assert_eq!("-0.88", format!("{:.2}", -0.875f64));
54+
assert_eq!("-0.062", format!("{:.3}", -0.062f64));
55+
56+
assert_eq!("2e0", format!("{:.0e}", 1.5f64));
57+
assert_eq!("2e0", format!("{:.0e}", 2.5f64));
58+
assert_eq!("4e0", format!("{:.0e}", 3.5f64));
59+
assert_eq!("4e0", format!("{:.0e}", 4.5f64));
60+
assert_eq!("6e0", format!("{:.0e}", 5.5f64));
61+
assert_eq!("1.28e2", format!("{:.2e}", 127.5f64));
62+
assert_eq!("1.28e2", format!("{:.2e}", 128.5f64));
63+
assert_eq!("-2e0", format!("{:.0e}", -1.5f64));
64+
assert_eq!("-2e0", format!("{:.0e}", -2.5f64));
65+
assert_eq!("-4e0", format!("{:.0e}", -3.5f64));
66+
assert_eq!("-4e0", format!("{:.0e}", -4.5f64));
67+
assert_eq!("-6e0", format!("{:.0e}", -5.5f64));
68+
assert_eq!("-1.28e2", format!("{:.2e}", -127.5f64));
69+
assert_eq!("-1.28e2", format!("{:.2e}", -128.5f64));
70+
71+
assert_eq!("2E0", format!("{:.0E}", 1.5f64));
72+
assert_eq!("2E0", format!("{:.0E}", 2.5f64));
73+
assert_eq!("4E0", format!("{:.0E}", 3.5f64));
74+
assert_eq!("4E0", format!("{:.0E}", 4.5f64));
75+
assert_eq!("6E0", format!("{:.0E}", 5.5f64));
76+
assert_eq!("1.28E2", format!("{:.2E}", 127.5f64));
77+
assert_eq!("1.28E2", format!("{:.2E}", 128.5f64));
78+
assert_eq!("-2E0", format!("{:.0E}", -1.5f64));
79+
assert_eq!("-2E0", format!("{:.0E}", -2.5f64));
80+
assert_eq!("-4E0", format!("{:.0E}", -3.5f64));
81+
assert_eq!("-4E0", format!("{:.0E}", -4.5f64));
82+
assert_eq!("-6E0", format!("{:.0E}", -5.5f64));
83+
assert_eq!("-1.28E2", format!("{:.2E}", -127.5f64));
84+
assert_eq!("-1.28E2", format!("{:.2E}", -128.5f64));
85+
}
86+
2787
#[test]
2888
fn test_format_f32() {
2989
assert_eq!("1", format!("{:.0}", 1.0f32));
@@ -50,6 +110,66 @@ fn test_format_f32() {
50110
assert_eq!("1234.6", format!("{:.1?}", 1234.56789f32));
51111
}
52112

113+
#[test]
114+
fn test_format_f32_rounds_ties_to_even() {
115+
assert_eq!("0", format!("{:.0}", 0.5f32));
116+
assert_eq!("2", format!("{:.0}", 1.5f32));
117+
assert_eq!("2", format!("{:.0}", 2.5f32));
118+
assert_eq!("4", format!("{:.0}", 3.5f32));
119+
assert_eq!("4", format!("{:.0}", 4.5f32));
120+
assert_eq!("6", format!("{:.0}", 5.5f32));
121+
assert_eq!("128", format!("{:.0}", 127.5f32));
122+
assert_eq!("128", format!("{:.0}", 128.5f32));
123+
assert_eq!("0.2", format!("{:.1}", 0.25f32));
124+
assert_eq!("0.8", format!("{:.1}", 0.75f32));
125+
assert_eq!("0.12", format!("{:.2}", 0.125f32));
126+
assert_eq!("0.88", format!("{:.2}", 0.875f32));
127+
assert_eq!("0.062", format!("{:.3}", 0.062f32));
128+
assert_eq!("-0", format!("{:.0}", -0.5f32));
129+
assert_eq!("-2", format!("{:.0}", -1.5f32));
130+
assert_eq!("-2", format!("{:.0}", -2.5f32));
131+
assert_eq!("-4", format!("{:.0}", -3.5f32));
132+
assert_eq!("-4", format!("{:.0}", -4.5f32));
133+
assert_eq!("-6", format!("{:.0}", -5.5f32));
134+
assert_eq!("-128", format!("{:.0}", -127.5f32));
135+
assert_eq!("-128", format!("{:.0}", -128.5f32));
136+
assert_eq!("-0.2", format!("{:.1}", -0.25f32));
137+
assert_eq!("-0.8", format!("{:.1}", -0.75f32));
138+
assert_eq!("-0.12", format!("{:.2}", -0.125f32));
139+
assert_eq!("-0.88", format!("{:.2}", -0.875f32));
140+
assert_eq!("-0.062", format!("{:.3}", -0.062f32));
141+
142+
assert_eq!("2e0", format!("{:.0e}", 1.5f32));
143+
assert_eq!("2e0", format!("{:.0e}", 2.5f32));
144+
assert_eq!("4e0", format!("{:.0e}", 3.5f32));
145+
assert_eq!("4e0", format!("{:.0e}", 4.5f32));
146+
assert_eq!("6e0", format!("{:.0e}", 5.5f32));
147+
assert_eq!("1.28e2", format!("{:.2e}", 127.5f32));
148+
assert_eq!("1.28e2", format!("{:.2e}", 128.5f32));
149+
assert_eq!("-2e0", format!("{:.0e}", -1.5f32));
150+
assert_eq!("-2e0", format!("{:.0e}", -2.5f32));
151+
assert_eq!("-4e0", format!("{:.0e}", -3.5f32));
152+
assert_eq!("-4e0", format!("{:.0e}", -4.5f32));
153+
assert_eq!("-6e0", format!("{:.0e}", -5.5f32));
154+
assert_eq!("-1.28e2", format!("{:.2e}", -127.5f32));
155+
assert_eq!("-1.28e2", format!("{:.2e}", -128.5f32));
156+
157+
assert_eq!("2E0", format!("{:.0E}", 1.5f32));
158+
assert_eq!("2E0", format!("{:.0E}", 2.5f32));
159+
assert_eq!("4E0", format!("{:.0E}", 3.5f32));
160+
assert_eq!("4E0", format!("{:.0E}", 4.5f32));
161+
assert_eq!("6E0", format!("{:.0E}", 5.5f32));
162+
assert_eq!("1.28E2", format!("{:.2E}", 127.5f32));
163+
assert_eq!("1.28E2", format!("{:.2E}", 128.5f32));
164+
assert_eq!("-2E0", format!("{:.0E}", -1.5f32));
165+
assert_eq!("-2E0", format!("{:.0E}", -2.5f32));
166+
assert_eq!("-4E0", format!("{:.0E}", -3.5f32));
167+
assert_eq!("-4E0", format!("{:.0E}", -4.5f32));
168+
assert_eq!("-6E0", format!("{:.0E}", -5.5f32));
169+
assert_eq!("-1.28E2", format!("{:.2E}", -127.5f32));
170+
assert_eq!("-1.28E2", format!("{:.2E}", -128.5f32));
171+
}
172+
53173
fn is_exponential(s: &str) -> bool {
54174
s.contains("e") || s.contains("E")
55175
}

0 commit comments

Comments
 (0)