擅长:python、mysql、java
<p>当您将<code>'0.1'</code>作为字符串传递时,十进制将转换为浮点,而不会丢失精度,但是当您将浮点直接作为<code>0.1</code>传递时,它将丢失精度,如下面所示</p>
<pre><code>>>> Decimal(0.1)
Decimal('0.1000000000000000055511151231257827021181583404541015625')
>>> Decimal('0.1')
Decimal('0.1')
</code></pre>
<p>这就产生了各种各样的wierd结果</p>
<pre><code>>>> Decimal(0.3) - Decimal(0.1) + Decimal(0.1) + Decimal(0.1)
Decimal('0.3999999999999999944488848768')
</code></pre>