当将golang float64值与整数相乘时,由于浮点数的存储方式,结果包含高精度的错误值。下面是一个代码片段,它显示了我所指的问题
package main
import (
"fmt"
)
func main() {
var l float64 = 0.2
fmt.Println("Hello, playground",l*6)
}结果是
Hello, playground 1.2000000000000002下面是同一个游乐场的play链接
有标准/最好的做法来避免错误吗?
发布于 2016-06-20 06:44:21
这取决于用例是什么,以及要显示多少位数字。你可以这样做:
func main() {
var l float64 = 0.2
fmt.Printf("Hello, playground %.8f",l*6)
}只显示小数点后的8个单位。但是,如果你是在处理货币,例如,你最好不要使用浮标,把所有东西都存为美分(在美国)或数(最低面值的货币)。
https://stackoverflow.com/questions/37915981
复制相似问题