如何格式化数字:整数补前导0至2位、小数至少保留3位
满足最低位数要求的数字格式化实现
原生fmt包的格式化动词不支持「仅设置最低位数、超出位数不截断」的规则,直接拆分整数、小数部分分别处理即可,逻辑简单且没有兼容性问题。
核心处理逻辑
- 拆分输入的数字字符串,以小数点为界分成整数段、小数段两部分
- 整数段长度不足2位时,在前端补0到2位;长度≥2位时完整保留原有内容,不做截断
- 小数段长度不足3位时,在末尾补0到3位;长度≥3位时完整保留原有内容,不做截断
- 拼接处理后的整数段、小数点、小数段,得到最终展示结果
代码示例(Go实现)
package main import "strings" func formatNumber(numStr string) string { segments := strings.SplitN(numStr, ".", 2) intSeg := segments[0] // 整数部分前补0到至少2位 for len(intSeg) < 2 { intSeg = "0" + intSeg } fracSeg := "" if len(segments) > 1 { fracSeg = segments[1] } // 小数部分后补0到至少3位 for len(fracSeg) < 3 { fracSeg += "0" } return intSeg + "." + fracSeg } func main() { testInputs := []string{"1.01", "1.2345", "321.1"} for _, input := range testInputs { println(formatNumber(input)) } // 运行输出: // 01.010 // 01.2345 // 321.100 }
注意事项
- 如果输入是浮点数字类型,不要直接用浮点数转字符串的默认方法,避免出现浮点精度误差导致小数部分位数异常,纯展示场景优先用原始字符串输入处理最稳妥
- 最终返回字符串类型即可,数字类型无法保留前置补0的格式。
内容的提问来源于stack exchange,提问作者tknx
相关产品推荐
相关产品推荐

