【发布时间】:2011-01-02 03:06:28
【问题描述】:
如果您以必须四舍五入到最接近的第 10 位的格式输入小数,并且它是:1.55,它将四舍五入到 1.5。然后 1.56 将四舍五入为 1.6。我记得在学校里,当你达到 5 时,你会四舍五入,如果是 4 或以下,则向下舍入。为什么它在 Python 等中有所不同。
这是 Python 2.6x 的代码示例(无论最新版本是什么)
'{0:01.2f}'.format(5.555) # This will return '5.55'
在尝试了提供的一些示例后,我意识到一些更令人困惑的事情:
'{0:01.1f}'.format(5.55) # This will return '5.5'
# But then
'{0:01.1f}'.format(1.55) # This will return '1.6'
为什么使用 1.55 和 5.55 时会有差异。两者都被输入为文字(所以浮动)
【问题讨论】:
-
我不知道有任何计算机语言可以做到这一点。手头有发生这种情况的示例代码吗?
-
那是因为“1.55”在您的系统上转换为可表示的二进制浮点数只是比十进制值1.55大,所以它向上取整; "5.55" 转换为仅小于 小于 5.55 的浮点数,因此向下舍入。
标签: math language-agnostic floating-point rounding