1
est 2019-10-21 11:06:30 +08:00
>>> (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 11:22:17 +08:00
楼主应该是需要的 trunc 而不是 floor 吧?
|
4
Northxw 2019-10-21 11:28:31 +08:00 1
随便搜了下,大概看了下,分享给你: https://blog.csdn.net/huzq1976/article/details/51581330
|
6
msg7086 2019-10-21 14:43:09 +08:00
>>> 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 14:44:12 +08:00
>>> 1.0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1
1.3877787807814457e-16 |