擅长:python、mysql、java
<p>正如前面的答案所建议的,您可以通过<a href="http://docs.python.org/2/library/decimal.html" rel="nofollow">decimal</a>模块使用十进制数,或者在打印浮点值时交替指定15位小数,以覆盖默认的12位小数。</p>
<p>在许多Python实现中,普通浮点数与IEEE 754兼容(<a href="http://en.wikipedia.org/wiki/IEEE_754-1985" rel="nofollow">1</a>,<a href="http://en.wikipedia.org/wiki/IEEE_754-2008" rel="nofollow">2</a>)“binary64”双精度数,因此在尾数中有效地有53位。由于<code>53*math.log(2)/math.log(10)</code>大约为15.95,binary64数字支持超过15位十进制数字的精度,但不完全是16位。</p>
<p>下面是一个您可以尝试的示例,显示了它的输出:</p>
<pre><code>u=1e-15
v=0.123456789101997
for k in range(13):print '{:20.15f}'.format(v+k*u)
0.123456789101997
0.123456789101998
0.123456789101999
0.123456789102000
0.123456789102001
0.123456789102002
0.123456789102003
0.123456789102004
0.123456789102005
0.123456789102006
0.123456789102007
0.123456789102008
0.123456789102009
</code></pre>