1
est 2019 年 10 月 21 日
>>> (1.0).__floordiv__(0.1)
9.0 另外双下划线不推荐日常使用。 |
2
chenstack OP @est 那说明是把 1 转换成 1.0 了,或者说是内部调用了(0.1).__rfloordiv__(1),那么问题来了,1.0 // 0.1 结果是 9.0,是怎么计算出来的
|
3
datou 2019 年 10 月 21 日
楼主应该是需要的 trunc 而不是 floor 吧?
|
4
Northxw 2019 年 10 月 21 日 随便搜了下,大概看了下,分享给你: https://blog.csdn.net/huzq1976/article/details/51581330
|
6
msg7086 2019 年 10 月 21 日
>>> 1.0 // 0.1
9.0 >>> 1.000000000000001 // 0.1 10.0 懂了吗? 这里的「 0.1 」是要比 0.1 大的。二进制下的 0.1 是一个循环小数,循环小数在有限精度下必然丢失精度,所以「 0.1 」是不等于 0.1 的。 |
7
msg7086 2019 年 10 月 21 日
>>> 1.0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1
1.3877787807814457e-16 |