擅长:python、mysql、java
<p>浮点数只是<em>近似值</em>;2.85不能精确表示<em></p>
<pre><code>>>> format(2.85, '.53f')
'2.85000000000000008881784197001252323389053344726562500'
</code></pre>
<p>略大于2.85。在</p>
<p>0.5和0.75<em>可以用二元分数(分别为1/2和1/2+1/4)精确表示。在</p>
<p><code>round()</code>函数<a href="https://docs.python.org/3/library/functions.html#round">documents this explicitly</a>:</p>
<blockquote>
<p><strong>Note</strong>: The behavior of <code>round()</code> for floats can be surprising: for example, <code>round(2.675, 2)</code> gives <code>2.67</code> instead of the expected <code>2.68</code>. This is not a bug: it’s a result of the fact that most decimal fractions can’t be represented exactly as a float. See <a href="https://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues"><em>Floating Point Arithmetic: Issues and Limitations</em></a> for more information.</p>
</blockquote>