擅长:python、mysql、java
<p>根据@juanpa.arrivillaga的见解进行了测试,这是一个很棒的兔子洞:</p>
<pre><code>number = 1999999997
temp = n * (n+1)
# type(temp) is int, n is 3999999990000000006. We can clearly see that after dividing by 2 we should get an odd number, and therefore output 1
divided = temp / 2
# type(divided) is float. Printing divided for me gives 1.999999995e+18
# divided % 2 is 0
divided_int = temp // 2
# type(divided_int) is int. Printing divided for me gives 1999999995000000003
</code></pre>
<p>//强制整数除法,并始终返回整数:7//2将等于3,而不是3.5</p>
<p>根据您链接的另一个答案,python中的int类型可以处理非常大的数字</p>
<p>Float也可以处理大量的数字,但是在跨语言表示Float的能力方面存在一些问题。问题的关键在于<em>并不是所有的浮动都能被准确捕获</em>:在许多情况下,1.9999999 5e+18和1.9999999 5000000003e+18之间的差异非常微小,这无关紧要,但这是一个可以准确捕获的情况,因为您非常关心数字的最后一位</p>
<p>您可以通过观看此<a href="https://www.youtube.com/watch?v=PZRI1IfStY0" rel="nofollow noreferrer">video</a>了解更多信息</p>