如何将浮点数格式化为具有以下要求的固定宽度:
如果 n < 1,则前导零 添加尾随小数零以填充固定宽度 截断超过固定宽度的小数位 对齐所有小数点
例如:
% 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
numbers = [23.23, 0.1233, 1.0, 4.223, 9887.2]
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 部分是格式规范。
f 表示定点符号。
10 是正在打印的字段的总宽度,左边用空格填充。
4 是小数点后的位数。
这个问题已经有好几年了,但从 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
在 python3 中,以下工作:
>>> v=10.4
>>> print('% 6.2f' % v)
10.40
>>> print('% 12.1f' % v)
10.4
>>> print('%012.1f' % v)
0000000010.4
%
格式化是最古老的格式化方法。出于多种原因,使用 str.format
或 f-strings
优于 %
。以前只有 str.format
时,人们有一些原因,但 f-strings
修复了那个洞。 format mini-language docs、str.format examples from docs 和 f-string literals examples in docs
请参阅 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
您也可以用零填充。例如,如果您希望 number
的长度为 9 个字符,左填充零,请使用:
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,...
因此,如果您想在文件名中强制执行必要的数字顺序,您需要用适当数量的零填充。
这将打印 76.66
:
print("Number: ", f"{76.663254: .2f}")
在 Python 3 中。
GPA = 2.5
print(" %6.1f " % GPA)
6.1f
表示在点后显示 1 位数字,如果您在点后打印 2 位数字,则您应该只在 %6.2f
之后显示 %6.3f
3 位数字。
>>> number = 12.34
>>> print(f"{number}")
12.34
>>> print(f"{number:10f}")
12.340000
>>> print(f"{number:10.4f}")
12.3400
冒号:
后面的10.4f
是format specification,其中10是整数(包括空格)的字符宽度,第二个数字4是小数位数,f
代表用于浮点数。
也可以使用变量而不是硬编码宽度和小数位数:
>>> number = 12.34
>>> width = 10
>>> decimals = 4
>>> print(f"{number:{width}.{decimals}f}")
12.3400
我需要类似的数组。这对我有帮助
some_array_rounded=np.around(some_array, 5)
我尝试了所有选项,例如
pd.options.display.float_format = '{:.4f}'.format pd.set_option('display.float_format', str) pd.set_option('display.float_format', lambda x: f'%.{len(str (x%1))-2}f' % x) pd.set_option('display.float_format', lambda x: '%.3f' % x)
但没有什么对我有用。
因此,在将变量/值 (var1
) 分配给变量(例如 num1
)时,我使用了 round(val,5)
num1 = round(var1,5)
这是一种粗略的方法,因为您必须在每个作业中使用此轮函数。但这可以确保您控制它的发生方式并获得您想要的。
10.4
表示宽度为 10 个字符,精度为 4 位小数。10
是最小字段宽度,即打印字符串的最小长度。默认情况下,数字右对齐并用空格填充 - 有关详细信息,请参阅 the documentation。("%0.4f" % x).rjust(10)
"%10.4f" % x
。在 Python 2.6 中,您还可以使用"{0:10.4f}".format(x)
。