mirror of
https://github.com/golang/go
synced 2024-11-21 22:24:40 -07:00
strconv: fix round up corner case
Comment described the correct condition but the code did not implement it. Fixes #2625. R=remyoudompheng CC=golang-dev https://golang.org/cl/5530082
This commit is contained in:
parent
701f70abf6
commit
6f77cd2914
@ -241,7 +241,7 @@ func roundShortest(d *decimal, mant uint64, exp int, flt *floatInfo) {
|
||||
|
||||
// Okay to round up if upper has a different digit and
|
||||
// either upper is inclusive or upper is bigger than the result of rounding up.
|
||||
okup := m != u && (inclusive || i+1 < upper.nd)
|
||||
okup := m != u && (inclusive || m+1 < u || i+1 < upper.nd)
|
||||
|
||||
// If it's okay to do either, then round to the nearest one.
|
||||
// If it's okay to do only one, do it.
|
||||
|
@ -123,6 +123,10 @@ var ftoatests = []ftoaTest{
|
||||
{2.2250738585072012e-308, 'g', -1, "2.2250738585072014e-308"},
|
||||
// http://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/
|
||||
{2.2250738585072011e-308, 'g', -1, "2.225073858507201e-308"},
|
||||
|
||||
// Issue 2625.
|
||||
{383260575764816448, 'f', 0, "383260575764816448"},
|
||||
{383260575764816448, 'g', -1, "3.8326057576481645e+17"},
|
||||
}
|
||||
|
||||
func TestFtoa(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user