如何在将浮点数写入文件时减少小数点后的数字?

6
在我的程序中,我将浮点数打印到文件中。这些数字具有很高的精度,因此小数点后面有许多位数,例如0.0433896882981。如何减少我将其打印到文件中的数字位数?例如我要打印0.043而不是0.0433896882981。
3个回答

13
您可以使用基本的字符串格式化,例如:
>>> print '%.4f' % (2.2352341234)
2.2352

这里的%.4f告诉Python将精度限制在小数点后四位。


可以将.4作为变量提供吗? - alper
@alper 这种字符串格式化的文档(https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting)描述了如何实现这一点。请参阅“精度”的说明。 - larsks

8

你没有说明使用的是哪个版本,或者具体如何进行操作,因此我假设您正在使用3.x版本。

str.format("{0:.3f}", pi) # use 3 digits of precision and float-formatting.

格式说明符通常长这样:

[[填充字符]对齐方式][符号][#][0][最小宽度][.精度][类型]

其他示例:

>>> str.format("{0:" ">10.5f}", 3.14159265)
'   3.14159'
>>> str.format("{0:0>10.5f}", 3.14159265)
'0003.14159'
>>> str.format("{0:<10.5f}", 3.14159265)
'3.14159   '

4
你应该真正使用字符串方法,而不是 str 方法:"{0:.3f}".format(pi)。并且去掉分号! - Mark Ransom
每当我写Python时,分号总是不可避免地悄悄溜进来。 :D - Skurmedel

3
小数点后的数字可以使用以下格式指令进行指定:
In [15]: n = 0.0433896882981
In [16]: print '%.3f' % n

产生以下结果:

0.043

% f 部分表示您要打印一个带有小数点的数字,.3 表示小数点后的数字位数。

其他示例:

In [17]: print '%.1f' % n
0.0

In [18]: print '%.2f' % n
0.04

In [19]: print '%.4f' % n
0.0434

In [20]: print '%.5f' % n
0.04339

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接