使用小数位的整数条件格式

我有以下情况:我将收到整数并且必须根据以下规则格式化它们:


10000 -> 100 // removing the last "00"

10010 -> 100.1 // removing the last "0", and adding a decimal place

10011 -> 100.11 // adding two decimal places 

如何做到这一点?非常感谢。


慕村225694
浏览 72回答 1
1回答

慕慕森

使用浮点数将整数转换为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上尝试):100100.1100.11100000100000.1100000.11100000000100000000.1100000000.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试试这个。
打开App,查看更多内容
随时随地看视频慕课网APP