在Python中将点后的浮点四舍五入到2位数字

2023-11-21

我正在使用这段代码:

f = 0.3223322
float('%.2f' % (f))

有没有更Pythonic、更简洁的方法,无需两次转换? 使用round文档中的以下注释令人沮丧

round() 对于浮点数的行为可能会令人惊讶:例如, round(2.675, 2) 给出 2.67,而不是预期的 2.68。这不是一个 bug:这是因为大多数小数不能被 完全表示为浮点数。请参阅浮点运算:问题 和限制以获取更多信息。


round(number[, ndigits]):

>>> round(0.3223322, 2)
0.32

请注意,由于浮点不精确,在生成输出时您可能仍然希望使用一定精度的字符串格式。

根据您想要实现的目标,可能适合使用Decimal type:

>>> from decimal import Decimal
>>> round(Decimal(0.3223322), 2)
Decimal('0.32')

它以(惊讶!)十进制而不是二进制进行数学运算,因此不会遇到任何小数舍入问题(除了最初如果您尝试从浮点数创建它)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中将点后的浮点四舍五入到2位数字 的相关文章