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

use*_*ame 1 python floating-point rounding

例如,

a = 5 * 6.2
print (round(a, 2)
Run Code Online (Sandbox Code Playgroud)

输出为31.0.我原以为31.00.

b = 2.3 * 3.2
print (round(b, 3))
Run Code Online (Sandbox Code Playgroud)

输出为7.36.我原以为7.360.

Mar*_*ers 9

您正在混淆舍入格式.舍入生成一个float带有舍入值的新对象,它仍将以与任何其他浮点数相同的方式打印:

>>> print(31.00)
31.0
Run Code Online (Sandbox Code Playgroud)

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

>>> print(format(31.0, '.2f'))
31.00
Run Code Online (Sandbox Code Playgroud)

有关可用选项,请参阅格式规范迷你语言部分.

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

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


kin*_*all 6

Python总是在小数点后打印至少一位数,这样你就能分辨出整数和浮点数之间的区别.

round()函数仅将数字舍入到指定的小数位数.它无法控制打印方式.7.36和7.360是相同的数字,因此打印时间越短.

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

print(".3f" % b)
Run Code Online (Sandbox Code Playgroud)


blu*_*ote 5

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