为什么 Python 不包括我在四舍五入时指定的小数点后的位数?

Why doesn't Python include number of digits I specify after the decimal point when 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.

Python 舍入到小数点后 3 位。它是削减额外零的打印。试试 print("%.3f" % number)

您混淆了四舍五入和格式设置。四舍五入产生一个新的 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))

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

round()函数只是将数字四舍五入到指定的小数位数。它不控制它的打印方式。 7.36 和 7.360 是相同的数字,所以打印较短的。

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

print(".3f" % b)