`golang` float64 乘法上高精度错误的正确路由方法是什么

What is the right way for rouding of high precision error on `golang` float64 multiplication

当将 golang float64 值与整数相乘时,由于浮点数的存储方式,结果包含高精度错误值。 这是一个代码片段,显示了我所指的问题

package main

import (
"fmt"
)

func main() {
        var l float64 = 0.2
    fmt.Println("Hello, playground",l*6)
}

结果是

Hello, playground 1.2000000000000002

这是相同的剧本link playground

是否有 standard/best 错误四舍五入的做法?

这取决于用例是什么以及您要显示多少位数。你可以这样做:

func main() {
    var l float64 = 0.2
    fmt.Printf("Hello, playground %.8f",l*6)
}

并且只显示小数点后8个单位。但是,如果您正在处理货币,例如,您最好根本不使用浮点数,并将所有内容保存为美分(在美国)或数量(最低面额的货币)。