擅长:python、mysql、java
<blockquote>
<p>For relatively simple floats, the numerical precision is sufficient to represent them exactly</p>
</blockquote>
<p>不是真的。是的,<em>17.5</em>可以精确表示,因为它是2的幂的倍数(确切地说是2的倍数)。但即使是非常简单的float,如<em>0.1</em>也不能精确表示。在那里,它依赖于文本到浮点的转换例程来获得尽可能接近的表示。你知道吗</p>
<p>转换是由运行时(或编译器的C或Java运行时,对于文本)完成的,它使用C或Java函数(如C的strtod()</em>)来完成(Java实现了David Gay的<em>strtod()</em>的代码,但使用Java语言)。你知道吗</p>
<p>不是每个strtod()的实现,也就是说,不是每个C/Java编译器都使用相同的方法进行转换,因此在<strong>某些结果中可能存在细微的差异,通常是不显著的差异。你知道吗</p>
<hr/>
<p><em>FWIW,网站<a href="https://www.exploringbinary.com/topics/" rel="nofollow noreferrer">Exploring Binary</a>(没有隶属关系,我只是个超级粉丝)有很多关于这个主题的文章。这显然不像预期的那么简单。</em></p>