<p>摘自对<a href="https://stackoverflow.com/questions/9999221/double-precision-decimal-places">this question</a>的回答:</p>
<blockquote>
<p>IEEE 754 floating point is done in binary. There's no exact conversion from a given number of bits to a given number of decimal digits. 3 bits can hold values from 0 to 7, and 4 bits can hold values from 0 to 15. A value from 0 to 9 takes roughly 3.5 bits, but that's not exact either.</p>
<p>An IEEE 754 double precision number occupies 64 bits. Of this, 52 bits are dedicated to the significand (the rest is a sign bit and exponent). Since the significand is (usually) normalized, there's an implied 53rd bit.</p>
<p>Now, given 53 bits and roughly 3.5 bits per digit, simple division gives us 15.1429 digits of precision. But remember, that 3.5 bits per decimal digit is only an approximation, not a perfectly accurate answer.</p>
</blockquote>
<p>您提供的15位数字后面的这个奇怪的<code>.1429</code>可能是添加的1的罪魁祸首。在</p>
<p>值得一提的是,Python在他们的网站上写了以下内容:</p>
<blockquote>
<p>Historically, the Python prompt and built-in <code>repr()</code> function would choose the one with 17 significant digits, 0.10000000000000001. Starting with Python 3.1, Python (on most systems) is now able to choose the shortest of these and simply display 0.1.</p>
</blockquote>