在`golang` float64乘法上遍布高精度误差的正确方法是什么?



将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个单元。但是,如果您要处理货币,例如,最好完全不使用浮子,并将所有东西保存为美分(在美国)或(货币的最低面额)。

最新更新