如何将浮点数格式化为固定宽度,具体要求如下:

如果n < 1,前导0 添加尾随小数零(s)以填充固定宽度 截断超过固定宽度的十进制数字 对齐所有小数点

例如:

% 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

当前回答

使用f字面值:

>>> number = 12.34
>>> print(f"{number}")
12.34
>>> print(f"{number:10f}")
 12.340000
>>> print(f"{number:10.4f}")
   12.3400

冒号后面的10.4f是格式规范,10是整数(包括空格)的字符宽度,第二个数字4是小数点后的位数,f代表浮点数。

也可以使用变量,而不是硬编码宽度和小数点后的位数:

>>> number = 12.34
>>> width = 10
>>> decimals = 4
>>> print(f"{number:{width}.{decimals}f}")
   12.3400

其他回答

在Python 3中。

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

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

参见Python 3。X格式字符串语法:

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

对于数组,我需要一些类似的东西。这帮助了我

some_array_rounded=np.around(some_array, 5)

在python3中,以下工作:

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

使用f字面值:

>>> number = 12.34
>>> print(f"{number}")
12.34
>>> print(f"{number:10f}")
 12.340000
>>> print(f"{number:10.4f}")
   12.3400

冒号后面的10.4f是格式规范,10是整数(包括空格)的字符宽度,第二个数字4是小数点后的位数,f代表浮点数。

也可以使用变量,而不是硬编码宽度和小数点后的位数:

>>> number = 12.34
>>> width = 10
>>> decimals = 4
>>> print(f"{number:{width}.{decimals}f}")
   12.3400