algorithm - 如何用golang得到小数点后两位的长度?

标签 algorithm go

从下面的源代码中,我想得到浮点类型的结果 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/

相关文章:

c++ - 如果有更多重复键,则快速排序算法改进

java - 处理一组被覆盖的方法取决于它是任意的还是交替的

arrays - 两个数组所有可能乘积中的第 k 个最大元素

没有远程存储库的 Go 模块?

go - 将 "net/http"上的 *Request 传递给 Golang 函数

algorithm - 将一个集合划分为 k 个不相交的子集

查找问题相似性的算法

go - 初始化 map 的更好方法是什么?

for-loop - 是否不鼓励在 Go 中使用单行 for 循环或 if 语句?

go - strconv.Itoa 中的 "itoa"代表什么?