我想知道导致这种行为的原因.我无法找到涵盖这一点的答案.它可能是简单而明显的东西,但它不适合我.我使用python 2.7.3
在Ubuntu
.
In [1]: 2 == 1.9999999999999999
Out[1]: True
In [2]: 2 == 1.999999999999999
Out[2]: False
Run Code Online (Sandbox Code Playgroud)
编辑:
澄清我的问题.是否有一个书面的(在文档中)最大数量为9的,其中python将上面的表达式评估为等于2?
1.9999999999999999
是2.0
,因为64位浮点值(所谓的"双精度")使用52位有效数,相当于大约15位小数.因此字面意思1.9999999999999999
只是另一种写作方式2.0
.但是,最接近的值1.999999999999999
小于2.0
(我认为它是1.9999999999999988897769753748434595763683319091796875
完全正确的,但是我太懒了,无法检查它是否正确,我只是依赖于Python的格式代码).因此,1.9999999999999999 == 2
出于同样的原因2.0 == 2
(Python允许包含比较的混合类型数值运算,并且整数2
等于float 2.0
).鉴于1.999999999999999 != 2
.
归档时间: |
|
查看次数: |
171 次 |
最近记录: |