擅长:python、mysql、java
<p>以以下为例:</p>
<pre><code>print(round(2.665, 2))
print(round(2.675, 2))
Output
2.67
2.67
</code></pre>
<p><strong>注意</strong>:浮动<code>round()</code>的行为可能令人惊讶。注意<code>round(2.675, 2)</code>给出了<code>2.67</code>,而不是预期的<code>2.68</code>。这不是一个错误:这是因为大多数小数不能精确地表示为浮点</p>
<p>当十进制数<code>2.675</code>转换为二进制浮点数时,它再次被二进制近似值替换,其精确值为:</p>
<pre><code>2.67499999999999982236431605997495353221893310546875
</code></pre>
<p>因此,它被四舍五入到<strong>2.67</strong></p>
<P>如果你需要一个精确的情况,考虑使用浮点运算的十进制模块:</P>
<pre><code>from decimal import Decimal
# normal float
income= 2.675
print(round(income, 2))
# using decimal.Decimal (passed float as string for precision)
income= Decimal('2.675')
print(round(income, 2))
Output
2.67
2.68
</code></pre>