擅长:python、mysql、java
<p>真除法隐式地将输入转换为float,它不提供精确地存储<code>a</code>值的精度。E、 在我的机器上</p>
<pre><code>>>> int(1E15+1)
1000000000000001
>>> int(1E16+1)
10000000000000000
</code></pre>
<p>所以你失去了精确性。类似的情况发生在你的大数字上(比较<code>int(float(a))-a</code>)。<br/>
现在,如果你检查你的除法,你会看到结果“is”实际上是一个整数</p>
^{pr2}$
<p>这也是事先没有预料到的。在</p>
<p>在数学.trunc函数执行类似的操作(来自<a href="https://docs.python.org/2/library/math.html" rel="nofollow noreferrer">docs</a>):
<em>返回截断为整数(通常是长整数)的实值x。</em></p>
<p>python的duck类型特性允许比较长整数和float,请参阅
<a href="https://stackoverflow.com/q/6209008/2870069">Checking if float is equivalent to an integer value in python</a>和
<a href="https://stackoverflow.com/questions/10037115/comparing-a-float-and-an-int-in-python">Comparing a float and an int in Python</a>。在</p>