gpt4 book ai didi

go - 将 float 格式化为 n 位小数且没有尾随零

转载 作者:IT老高 更新时间:2023-10-28 13:06:12 25 4
gpt4 key购买 nike

我想显示一个包含整个整数部分和最多两位小数的小数部分的 float ,不带尾随零。

http://play.golang.org/p/mAdQl6erWX :

// Desired output: 
// "1.9"
// "10.9"
// "100.9"

fmt.Println("2g:")
fmt.Println(fmt.Sprintf("%.2g", 1.900)) // outputs "1.9"
fmt.Println(fmt.Sprintf("%.2g", 10.900)) // outputs "11"
fmt.Println(fmt.Sprintf("%.2g", 100.900)) // outputs "1e+02"

fmt.Println("\n2f:")
fmt.Println(fmt.Sprintf("%.2f", 1.900)) // outputs "1.90"
fmt.Println(fmt.Sprintf("%.2f", 10.900)) // outputs "10.90"
fmt.Println(fmt.Sprintf("%.2f", 100.900)) // outputs "100.90"

使用 2g 格式化的问题是当整数增加数量级时它开始舍入。此外,它有时会显示带有 e 的数字。

使用 2f 格式化的问题是它会显示尾随零。我可以编写一个删除尾随零的后处理函数,但我宁愿使用 Sprintf 来执行此操作。

这可以使用 Sprintf 以通用方式完成吗?
如果没有,有什么好的方法可以做到这一点?

最佳答案

strconv.FormatFloat(10.900, 'f', -1, 64)

这将导致 10.9.

作为第三个参数的 -1 告诉函数打印准确表示 float 所需的最少数字。

请看这里:https://golang.org/pkg/strconv/#FormatFloat

关于go - 将 float 格式化为 n 位小数且没有尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com