1 回答
TA贡献1856条经验 获得超17个赞
使用浮点数
将整数转换为float64,除以100并使用包的%g动词fmt,它删除尾随零:
对于浮点值,宽度设置字段的最小宽度,精度设置小数点后的位数(如果适用),除了 %g/%G 精度设置最大有效数字位数(尾随零被删除) .
为避免“大”数字恢复为%e科学记数法(大于默认精度的数字,即 6 %g),明确指定宽度,如下所示:
fmt.Printf("%.12g\n", float64(v)/100)
测试它:
for _, v := range []int{
10000, 10010, 10011,
10000000, 10000010, 10000011,
10000000000, 10000000010, 10000000011,
} {
fmt.Printf("%.12g\n", float64(v)/100)
}
这将输出(在Go Playground上尝试):
100
100.1
100.11
100000
100000.1
100000.11
100000000
100000000.1
100000000.11
使用整数
在不转换为浮点数的情况下(并依赖于 的尾随零删除%g),这就是使用整数运算的方法:
最后 2 位是除以 100 的余数,其余是整数除以 100 的结果。您可以根据余数格式化这 2 个数字,如下所示:
switch q, r := v/100, v%100; {
case r == 0:
fmt.Println(q)
case r%10 == 0:
fmt.Printf("%d.%d\n", q, r/10)
default:
fmt.Printf("%d.%02d\n", q, r)
}
在Go Playground试试这个。
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报