@@ -38,6 +38,23 @@ func TestDecimal64String(t *testing.T) {
38
38
}
39
39
}
40
40
41
+ func TestDecimal64StringEdgeCases (t * testing.T ) {
42
+ t .Parallel ()
43
+
44
+ require .Equal (t , "123456" , MustParse64 ("123456" ).String ())
45
+ require .Equal (t , "-123456" , MustParse64 ("-123456" ).String ())
46
+ require .Equal (t , "1.234567e+6" , MustParse64 ("1234567" ).String ())
47
+ require .Equal (t , "-1.234567e+6" , MustParse64 ("-1234567" ).String ())
48
+ require .Equal (t , "0.0001" , MustParse64 ("0.0001" ).String ())
49
+ require .Equal (t , "-0.0001" , MustParse64 ("-0.0001" ).String ())
50
+ require .Equal (t , "1e-5" , MustParse64 ("0.00001" ).String ())
51
+ require .Equal (t , "-1e-5" , MustParse64 ("-0.00001" ).String ())
52
+ require .Equal (t , "9.999999999999999e+384" , MustParse64 ("9.999999999999999e+384" ).String ())
53
+ require .Equal (t , "-9.999999999999999e+384" , MustParse64 ("-9.999999999999999e+384" ).String ())
54
+ require .Equal (t , "1e-398" , MustParse64 ("1e-398" ).String ())
55
+ require .Equal (t , "-1e-398" , MustParse64 ("-1e-398" ).String ())
56
+ }
57
+
41
58
func BenchmarkDecimal64String (b * testing.B ) {
42
59
d := New64FromInt64 (123456789 )
43
60
for i := 0 ; i <= b .N ; i ++ {
@@ -116,7 +133,7 @@ func TestDecimal64FormatPrec(t *testing.T) {
116
133
117
134
// Add five digits to the significand so we round at a 2.
118
135
pi = pi .Add (New64FromInt64 (10_100_000_000 ))
119
- assert .Equal (t , "10100100103.14159 " , fmt .Sprintf ("%v" , pi ))
136
+ assert .Equal (t , "1.010010010314159e+10 " , fmt .Sprintf ("%v" , pi ))
120
137
assert .Equal (t , "10100100103.141590" , fmt .Sprintf ("%f" , pi ))
121
138
assert .Equal (t , "10100100103" , fmt .Sprintf ("%.0f" , pi ))
122
139
assert .Equal (t , "10100100103.1" , fmt .Sprintf ("%.1f" , pi ))
0 commit comments