python中的浮点数精度

时间:2016-08-19 21:22:44

标签: python floating-point rounding

我有一个变量mn,其值为2.71989011072,我使用python的圆函数来获得2.720的精度值,但我只得到2.72

mn=2.71989011072
print round(mn,3)

给出2.72而不是2.720

4 个答案:

答案 0 :(得分:3)

是的, print 功能会应用第二轮。

mn = 2.71989011072
mn = round(mn, 3)
print(mn)

你会得到:

2.72

您需要使用格式化字符串:

print("{0:.3f}".format(mn))

你会得到:

2.720

请注意,格式化的字符串可以为您进行舍入。 有了这个,你将获得相同的输出:

mn = 2.71989011072
print("{0:.3f}".format(mn))
# => 2.720

答案 1 :(得分:1)

函数将其舍入为三个第一位数,正确地得到2.72。零是打印和字符串格式的问题,而不是舍入。

要使用三个零打印,您需要执行以下操作:

print '{0:.3f}'.format(round(mn, 3))

首先将数字舍入然后打印,然后用三个零格式化。

答案 2 :(得分:1)

您需要数字的特定字符串表示,而不是另一个数字。

使用format()代替round()

>>> mn = 2.71989011072
>>> format(mn, '.3f')
'2.720'

答案 3 :(得分:0)

使用 python 3,我们可以使用 f 字符串

print(f"{mn:.3f}")
<块引用>

2.720