在“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

这是同一个游乐场的播放链接


是否有标准/最佳实践来解决错误?


largeQ
浏览 335回答 1
1回答

小怪兽爱吃肉

这取决于用例是什么以及您要显示多少位数。你可以这样做:func main() {    var l float64 = 0.2    fmt.Printf("Hello, playground %.8f",l*6)}并且只显示小数点后 8 个单位。但是,例如,如果您正在处理货币,最好不要使用浮点数,并将所有内容保存为美分(在美国)或数量(最低面额的货币)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go