我正在使用这段代码:
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(使用前将#替换为@)