我有以下内容:
package main
import (
"fmt"
"math"
)
func main() {
nums := []float64{
0.15807659924030304, 0.10901273787021637, 0.04955724626779556, 0.05886702239513397,
}
for _, f := range nums {
fmt.Println(f, math.Round(f/.0001)*.0001)
}
}
输出是:
0.15807659924030304 0.15810000000000002
0.10901273787021637 0.109
0.04955724626779556 0.049600000000000005
0.05886702239513397 0.0589
为什么有些人以>结尾? 4位小数?我该如何纠正?
答案 0 :(得分:4)
fmt.Printf("%f %b %0.4f\n", f, f, math.Round(f/.0001)*.0001)
尝试使用它。 %0.4f
会将其格式化为4位小数。实际上,如果您只需要字符串,请使用它而不是Round函数。
%b
将向您展示真正的价值。在Go中,将显示一个大的十进制(base-10)值,ap,然后是幂为2的指数。因此当它显示5695309707476992p-55
时,你可以通过5695309707476992 / 2^55