从下面的源中,我想获取float类型的结果33.33
如果使用fmt.Sprintf("%.2f", v)可以很好地工作。但是要在floatTest函数中得到结果。怎么做?

func main() {
        v := floatTest(30, 90)
        fmt.Println(v)
        // 33.33333333333333
        vv := fmt.Sprintf("%.2f", v)
        fmt.Println(vv)
        // 33.33
}

func floatTest(count float64, total float64) float64 {
        return (count / total * 100)
}

最佳答案

乘以100;通过int转换截断;转换回float32并除以100:

func precision2(f float64) float64 {
    return float64(int(f*100)) / 100
}

https://play.golang.org/p/jbsdeQKgJji

link包含使用math包的示例-但我通常会尽量避免包括用于琐碎操作的包。

关于algorithm - Golang如何获得小数点后两位的长度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57067724/

10-13 06:47