mirror of
https://github.com/golang/go
synced 2024-11-05 18:36:08 +00:00
cmd/gc: round floats with a large negative exponent towards zero
Fixes #6902 LGTM=iant R=iant, rsc CC=golang-codereviews https://golang.org/cl/78730049
This commit is contained in:
parent
de1ea5de86
commit
a43673cf8a
2 changed files with 23 additions and 1 deletions
|
@ -427,7 +427,8 @@ mpatoflt(Mpflt *a, char *as)
|
|||
mppow10flt(&b, ex-dp);
|
||||
mpmulfltflt(a, &b);
|
||||
} else {
|
||||
if((short)(dp-ex) != dp-ex) {
|
||||
// 4 approximates least_upper_bound(log2(10)).
|
||||
if(dp-ex >= (1<<(8*sizeof(dp)-3)) || (short)(4*(dp-ex)) != 4*(dp-ex)) {
|
||||
mpmovecflt(a, 0.0);
|
||||
}
|
||||
else {
|
||||
|
|
21
test/fixedbugs/issue6902.go
Normal file
21
test/fixedbugs/issue6902.go
Normal file
|
@ -0,0 +1,21 @@
|
|||
// run
|
||||
|
||||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Issue 6902: confusing printing of large floating point constants
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
)
|
||||
|
||||
var x = -1e-10000
|
||||
|
||||
func main() {
|
||||
if x != 0 {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue