浮点不准确的例子

浮点不准确的例子

你如何向仍然认为计算机是无限智能和准确的新鲜程序员和外行人解释浮点不准确?
你有一个最喜欢的例子或轶事似乎比一个精确但干燥的解释更好地理解这个想法吗?
这是如何在计算机科学课程中教授的?

呼啦一阵风
浏览 674回答 5
5回答

千万里不及你

告诉他们基础10系统遇到完全相同的问题。尝试在基数10中将1/3表示为十进制表示。您将无法完全执行此操作。因此,如果您编写“0.3333”,您将获得许多用例的合理精确表示。但是,如果您移动回一小部分,你会得到“一万分之三千三百三十三”,这是不一样的“1/3”。其他分数,例如1/2可以很容易地用基数为10的有限十进制表示来表示:“0.5”现在base-2和base-10基本上也遇到了同样的问题:两者都有一些它们无法准确表示的数字。虽然base-10没有问题,在base-2中将1/10表示为“0.1”,但您需要以“0.000110011 ..”开头的无限表示。

12345678_0001

这对于外行人的解释是怎么回事?计算机代表数字的一种方法是计算离散单位。这些是数字计算机。对于整数,没有分数部分的那些,现代数字计算机计算两个幂:1,2,4,8 ,,,地方值,二进制数字,等等,等等,等等。对于分数,数字计算机计算两个的反幂:1 / 2,1 / 4,1 / 8,......问题是许多数不能用有限数量的这些反幂的和来表示。使用更多的位置值(更多位)将增加那些“问题”数字的表示的精度,但是从来没有完全得到它,因为它只有有限的位数。有些数字不能用无限数量的位表示。打盹...好的,你想测量容器中的水量,你只有3个量杯:满杯,半杯和四分之一杯。在计算完最后一个完整的杯子之后,让我们说剩余三分之一的杯子。然而,你无法衡量,因为它并没有完全填充可用杯子的任何组合。它没有填满半杯,四分之一杯的溢出量太小,无法填充任何东西。所以你有一个错误 - 1/3和1/4之间的差异。当您将其与其他测量的错误结合使用时,此错误会更加复杂。
打开App,查看更多内容
随时随地看视频慕课网APP