http://play.golang.org/p/3mjFDTTOXG
printf int没问题,但是浮点数,我没有前导零。
fmt.Printf("%03.6f\n", 1.234)
>1.234000
为什么会这样?如何进行前导零显示?
golang v1.4.1
修改
我想通了
fmt.Printf("%010.6f\n", 1.234)
现在好了。
修改
宽度和精度是以Unicode代码点为单位测量的,即符文。 (这与C的printf不同,其中单位总是以字节为单位进行测量。)其中一个或两个标志可以用字符'*'替换,导致它们的值从下一个操作数获得,该操作数必须是int类型。
答案 0 :(得分:4)
原因是您将6设置为将要打印的字符串的精度,并将3设置为宽度。来自fmt package.
宽度由紧随其后的可选十进制数指定 动词。如果不存在,则宽度是表示必要的宽度 价值。精度在(可选)宽度后指定 句点后跟一个十进制数。如果没有句号,a 使用默认精度。
...
0填充前导零而不是空格;
之后移动填充
对于数字,这会在符号
因此你得到1.234000。要获得前导0,您需要将字符串的宽度增加到8(长度为1 +。+ 234000)。因此,使用%09.6f
,您将获得01.234000