如何在 5 上舍入一个浮点数 [重复]
Posted
技术标签:
【中文标题】如何在 5 上舍入一个浮点数 [重复]【英文标题】:How to round a float up on 5 [duplicate] 【发布时间】: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
真正成为最后的十进制数字。
【参考方案1】:
您可以使用双舍入来克服二进制算术无法准确表示十进制值的问题。
round(round(1.265, 3) + 0.0005, 2)
【讨论】:
以上是关于如何在 5 上舍入一个浮点数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章