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:
Jan Ziak 2014-03-24 10:10:29 -07:00 committed by Ian Lance Taylor
parent de1ea5de86
commit a43673cf8a
2 changed files with 23 additions and 1 deletions

View file

@ -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 {

View 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)
}
}