mirror of
https://github.com/golang/go
synced 2024-11-23 15:30:05 -07:00
math/big: avoid MinExp exponent wrap-around in 'x' Text format
Fixes #34343. Change-Id: I74240c8f431f6596338633a86a7a5ee1fce70a65 Reviewed-on: https://go-review.googlesource.com/c/go/+/196057 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
99aa56a437
commit
770fac4586
@ -536,6 +536,10 @@ func TestFloatText(t *testing.T) {
|
||||
{"-8191.53125", ToNegativeInf, 53, 'x', 4, "-0x1.fff9p+12"},
|
||||
{"8191.53125", ToPositiveInf, 53, 'x', 4, "0x1.fff9p+12"},
|
||||
{"-8191.53125", ToPositiveInf, 53, 'x', 4, "-0x1.fff8p+12"},
|
||||
|
||||
// issue 34343
|
||||
{"0x.8p-2147483648", ToNearestEven, 4, 'p', -1, "0x.8p-2147483648"},
|
||||
{"0x.8p-2147483648", ToNearestEven, 4, 'x', -1, "0x1p-2147483649"},
|
||||
} {
|
||||
f, _, err := ParseFloat(test.x, 0, test.prec, ToNearestEven)
|
||||
if err != nil {
|
||||
|
@ -384,7 +384,7 @@ func (x *Float) fmtX(buf []byte, prec int) []byte {
|
||||
case w > n:
|
||||
m = nat(nil).shr(m, w-n)
|
||||
}
|
||||
exp := x.exp - 1
|
||||
exp64 := int64(x.exp) - 1 // avoid wrap-around
|
||||
|
||||
hm := m.utoa(16)
|
||||
if debugFloat && hm[0] != '1' {
|
||||
@ -397,7 +397,6 @@ func (x *Float) fmtX(buf []byte, prec int) []byte {
|
||||
}
|
||||
|
||||
buf = append(buf, 'p')
|
||||
exp64 := int64(exp)
|
||||
if exp64 >= 0 {
|
||||
buf = append(buf, '+')
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user