四舍五入时如何处理小数点后5位

Yuan Tian

我使用python来对浮点数进行四舍五入,而我对计算机的四舍五入方式感到困惑。例如:

round(1.55, 1) = 1.6 # this is what I would expect; however
round(1.65, 1) = 1.6 #this is what confuses me. Is it supposed to be 1.7?

另一个例子:

round(1.85, 1) = 1.9
round(1.95, 1) = 1.9

我想这可能与二进制和十进制之间的转换有关。我的问题是我怎么知道结尾5是否会被省略?非常感谢您的帮助!

安迪

文档描述了为什么发生此现象:

注意round()对浮点数的行为可能令人惊讶:例如,round(2.675,2)给出2.67,而不是预期的2.68。这不是错误:这是由于大多数十进制小数不能精确表示为浮点数的结果。有关更多信息,请参见浮点算法:问题和限制。

相关但不超出此问题的范围,对浮点算法的限制也很不错。

在该页面上,问题扩展为:

内置round()函数的文档说它四舍五入到最接近的值,四舍五入关系从零开始。由于十进制小数2.675恰好位于2.67和2.68之间的一半,因此您可能希望此处的结果是2.68(二进制近似值)。并非如此,因为当十进制字符串2.675转换为二进制浮点数时,它再次被二进制近似替换,其精确值为

2.67499999999999982236431605997495353221893310546875

由于此近似值比2.68略微接近2.67,因此四舍五入。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将数字四舍五入到小数点后n位?

来自分类Dev

四舍五入到小数点后四位?

来自分类Dev

.Net小数点后四舍五入

来自分类Dev

Java Double总是四舍五入到小数点后两位

来自分类Dev

四舍五入到小数点后两位

来自分类Dev

浮点数四舍五入到Java小数点后2位

来自分类Dev

在小数点后显示4位数字而不四舍五入值

来自分类Dev

变量总是四舍五入到小数点后两位-Python

来自分类Dev

四舍五入到javascript中的小数点后两位

来自分类Dev

Fortran-想要四舍五入到小数点后一位

来自分类Dev

四舍五入到小数点后两位

来自分类Dev

在Android中四舍五入到小数点后两位

来自分类Dev

四舍五入到C#中的小数点后15位

来自分类Dev

将数字四舍五入到小数点后两位

来自分类Dev

总是四舍五入到小数点后一位

来自分类Dev

四舍五入到小数点后两位

来自分类Dev

在JavaScript中将数字四舍五入到小数点后1位

来自分类Dev

为什么Matlab在小数点后四舍五入到4位?

来自分类Dev

四舍五入到小数点后两位

来自分类Dev

四舍五入到小数点后两位并通过TextView

来自分类Dev

四舍五入到小数点后两位

来自分类Dev

总是四舍五入到小数点后一位

来自分类Dev

将数字四舍五入到小数点后两位

来自分类Dev

四舍五入到小数点后2位

来自分类Dev

如何将Double值四舍五入到dart中的小数点后两位?

来自分类Dev

您如何将qml中的数字四舍五入到小数点后两位?

来自分类Dev

我如何在javascript中将数字四舍五入到小数点后两位(强制)

来自分类Dev

如何将数字四舍五入到小数点后两位

来自分类Dev

如何将MVC 4中的值四舍五入到小数点后两位。

Related 相关文章

热门标签

归档