@@ -24,6 +24,66 @@ fn test_format_f64() {
24
24
assert_eq ! ( "1234.6" , format!( "{:.1?}" , 1234.56789f64 ) ) ;
25
25
}
26
26
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
+
27
87
#[ test]
28
88
fn test_format_f32 ( ) {
29
89
assert_eq ! ( "1" , format!( "{:.0}" , 1.0f32 ) ) ;
@@ -50,6 +110,66 @@ fn test_format_f32() {
50
110
assert_eq ! ( "1234.6" , format!( "{:.1?}" , 1234.56789f32 ) ) ;
51
111
}
52
112
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
+
53
173
fn is_exponential ( s : & str ) -> bool {
54
174
s. contains ( "e" ) || s. contains ( "E" )
55
175
}
0 commit comments