【发布时间】:2015-04-28 17:43:11
【问题描述】:
所以我很惊讶我没有找到任何关于此的信息。
我有一个测试 C++ 程序的 python 脚本。它需要以与std::setprecision 相同的方式格式化浮点数。这是一个像 1.265 这样的浮点数,应该向上舍入到 1.27 (2 dp)。
现在我有以下代码:
"{:.2f}".format(myFloat)
问题是像 1.265 这样的数字被四舍五入到 1.26,我的测试失败了。 setprecision 将 1.265 舍入到 1.27。
解决此问题的最佳方法是什么?
【问题讨论】:
-
加 0.005 并向下舍入与将 1.265 向上舍入到 1.27 具有相同的行为。
-
@JeffJohnson 谢谢,将其发布为答案!
-
有趣的事实:1.265 不能表示为有限数量的 2 的幂的总和,因此它不能用浮点数精确表示。最有可能的是,它实际上存储为 1.2649999999999999023003738329862244427204132080078125,当然会向下舍入到 1.26。
-
最好的解决方案是使用
Decimal模块而不是二进制算术。您不能依赖尾随的5真正成为最后的十进制数字。
标签: python c++ python-2.7 rounding