为什么Python不包括舍入后小数点后指定的位数?

时间:2017-02-09 21:09:30

标签: python floating-point rounding

例如,

a = 5 * 6.2
print (round(a, 2)

输出为31.0。我原以为31.00。

b = 2.3 * 3.2
print (round(b, 3))

输出为7.36。我原以为7.360。

3 个答案:

答案 0 :(得分:9)

您对格式化的舍入感到困惑。舍入生成一个带有舍入值的新float对象,它仍将以与任何其他浮点数相同的方式打印:

>>> print(31.00)
31.0

如果您需要生成具有特定小数位数的字符串,请使用format() function

>>> print(format(31.0, '.2f'))
31.00

请参阅Format Specification Mini-Language部分了解您可以使用的选项。

如果值是较大字符串的一部分,您可以使用str.format() method将值嵌入到字符串模板中,使用相同的格式规范:

>>> a = 5 * 6.2
>>> print('The value of "a" is {:.2f}'.format(a))

答案 1 :(得分:6)

Python始终在小数点后打印至少一位数,这样就可以区分整数和浮点数。

round()函数仅将数字四舍五入到指定的小数位数。它无法控制打印方式。 7.36和7.360的编号相同,因此打印的编号较短。

要控制打印,您可以使用格式化。例如:

print(".3f" % b)

答案 2 :(得分:5)

Python会舍入到小数点后3位。这是印刷削减额外的零。尝试类似print("%.3f" % number)

的内容