golang printf float no leading zero

时间:2015-04-22 14:01:07

标签: go printf

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)

现在好了。

修改

来自https://golang.org/pkg/fmt/

  

宽度和精度是以Unicode代码点为单位测量的,即符文。 (这与C的printf不同,其中单位总是以字节为单位进行测量。)其中一个或两个标志可以用字符'*'替换,导致它们的值从下一个操作数获得,该操作数必须是int类型。

1 个答案:

答案 0 :(得分:4)

原因是您将6设置为将要打印的字符串的精度,并将3设置为宽度。来自fmt package.

  

宽度由紧随其后的可选十进制数指定   动词。如果不存在,则宽度是表示必要的宽度   价值。精度在(可选)宽度后指定   句点后跟一个十进制数。如果没有句号,a   使用默认精度。

     

...

     

0填充前导零而不是空格;
  对于数字,这会在符号

之后移动填充

因此你得到1.234000。要获得前导0,您需要将字符串的宽度增加到8(长度为1 +。+ 234000)。因此,使用%09.6f,您将获得01.234000