如何在Python中将浮点数格式化为固定宽度

时间:2012-01-16 20:07:54

标签: python string numbers number-formatting

如何根据以下要求将浮点数格式化为固定宽度:

  1. 如果n <0则前导零1
  2. 添加尾随小数零以填充固定宽度
  3. 截断超过固定宽度的十进制数字
  4. 对齐所有小数点
  5. 例如:

    % formatter something like '{:06}'
    numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]
    
    for number in numbers:
        print formatter.format(number)
    

    输出就像

      23.2300
       0.1233
       1.0000
       4.2230
    9887.2000
    

8 个答案:

答案 0 :(得分:403)

for x in numbers:
    print "{:10.4f}".format(x)

打印

   23.2300
    0.1233
    1.0000
    4.2230
 9887.2000

花括号内的格式说明符跟在Python format string syntax之后。具体而言,在这种情况下,它由以下部分组成:

  • 冒号之前的空字符串表示“将下一个提供的参数提取到format()” - 在这种情况下,x是唯一的参数。
  • 冒号后的10.4f部分为format specification
  • f表示定点表示法。
  • 10是正在打印的字段的总宽度,由空格填充。
  • 4是小数点后的位数。

答案 1 :(得分:33)

回答这个问题已经有好几年了,但是从Python 3.6(PEP498)开始,您可以使用新的f-strings

numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print(f'{number:9.4f}')

打印:

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000

答案 2 :(得分:32)

在python3中,以下工作:

>>> v=10.4
>>> print('% 6.2f' % v)
  10.40
>>> print('% 12.1f' % v)
        10.4
>>> print('%012.1f' % v)
0000000010.4

答案 3 :(得分:7)

参见Python 3.x format string syntax

IDLE 3.5.1   
numbers = ['23.23', '.1233', '1', '4.223', '9887.2']

for x in numbers:  
    print('{0: >#016.4f}'. format(float(x)))  

     23.2300
      0.1233
      1.0000
      4.2230
   9887.2000

答案 4 :(得分:1)

这将打印76.66

print("Number: ", f"{76.663254: .2f}")

答案 5 :(得分:0)

在Python 3中。

GPA = 2.5
print(" %6.1f " % GPA)

6.1f表示在点后1位数表示如果您在点后打印2位数,则只应%6.2f,以便在点之后打印%6.3f 3位数。

答案 6 :(得分:0)

您还可以将零填充为空白。例如,如果您希望number的长度为9个字符,请用0左填充:

print('{:09.3f}'.format(number))

因此,如果为number = 4.656,则输出为:00004.656

对于您的示例,输出将如下所示:

numbers  = [23.2300, 0.1233, 1.0000, 4.2230, 9887.2000]
for x in numbers: 
    print('{:010.4f}'.format(x))

打印:

00023.2300
00000.1233
00001.0000
00004.2230
09887.2000

一个可能有用的示例是当您想按字母顺序正确列出文件名时。我注意到在某些linux系统中,数字是:1,10,11,.. 2,20,21,...

因此,如果要在文件名中强制执行必要的数字顺序,则需要在键盘上填充适当数量的零。

答案 7 :(得分:0)

我需要类似的数组。那对我有帮助

some_array_rounded=np.around(some_array, 5)