mirror of
https://github.com/golang/go
synced 2024-11-21 22:14:41 -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
|
// 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.
|
// 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 either, then round to the nearest one.
|
||||||
// If it's okay to do only one, do it.
|
// 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"},
|
{2.2250738585072012e-308, 'g', -1, "2.2250738585072014e-308"},
|
||||||
// http://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/
|
// http://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/
|
||||||
{2.2250738585072011e-308, 'g', -1, "2.225073858507201e-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) {
|
func TestFtoa(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user