【发布时间】:2022-05-11 16:14:03
【问题描述】:
我想显示一个包含整个整数部分和小数部分最多两位小数的浮点数,不带尾随零。
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 以通用方式完成吗?
如果没有,有什么好的方法可以做到这一点?
【问题讨论】:
-
在
%.NgN 是总位数,而不是精度。不幸的是,我认为您不能仅使用Sprintf来实现您的要求。
标签: go floating-point-conversion