为什么 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)
例如,
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)