我正在使用这段代码:
f = 0.3223322
float('%.2f' % (f))
没有 2 次转换,是否有更多 pythonic、更简洁的方法?文档中的以下注释不鼓励使用 round
round() 对浮点数的行为可能令人惊讶:例如,round(2.675, 2) 给出 2.67 而不是预期的 2.68。这不是错误:这是大多数小数不能精确表示为浮点数这一事实的结果。有关详细信息,请参阅浮点运算:问题和限制。
原文由 rok 发布,翻译遵循 CC BY-SA 4.0 许可协议
round(number[, ndigits])
:请注意,由于浮点不精确,您在生成输出时可能仍希望使用一定精度的字符串格式。
根据您要实现的目标,使用
Decimal
类型可能是合适的:它以(惊喜!)十进制而不是二进制进行数学计算,因此不会遇到任何十进制舍入问题(最初如果您尝试从浮点数创建它除外)。