代码之家  ›  专栏  ›  技术社区  ›  shoosh

使用printf打印浮点时的额外前导零?

  •  36
  • shoosh  · 技术社区  · 14 年前

    我想能够写一个这样的时间字符串: 1:04:02.1 hours 使用printf。
    当我试图写这样的东西时:

    printf("%d:%02d:%02.1f hours\n", 1, 4, 2.123456);
    

    我得到:

    1:04:2.1 hours
    

    是否可以向浮点格式添加前导零?

    2 回复  |  直到 12 年前
        1
  •  66
  •   AndiDog    14 年前

    %f 格式说明符,“2”被视为字符总数的最小值,而不是小数点前的位数。因此,您必须用4替换它才能得到两个前导数字+小数点+一个十进制数字。

    printf("%d:%02d:%04.1f hours\n", 1, 4, 2.123456);
    
        2
  •  15
  •   kennytm    14 年前

    尝试 %04.1f 而不是 %02.1f . 这里的“4”表示至少打印4个字符,“2.1”有3个(>2)字符,因此要启用所需的填充零4。