将golang float64值与整数相乘时,结果包含高焦点误差值,这是由于浮点数存储的方式。这是一个代码段,显示我指的是
的问题package main
import (
"fmt"
)
func main() {
var l float64 = 0.2
fmt.Println("Hello, playground",l*6)
}
结果是
Hello, playground 1.2000000000000002
这是同一操场的播放链接
是否有标准/最佳练习来解决错误?
这取决于用例是什么以及要显示多少位数字。您可以做:
func main() {
var l float64 = 0.2
fmt.Printf("Hello, playground %.8f",l*6)
}
仅在十进制后显示8个单元。但是,如果您要处理货币,例如,最好完全不使用浮子,并将所有东西保存为美分(在美国)或(货币的最低面额)。