使用分数来解决十进制数字的不准确



如果小数不能用二进制表示,那么为什么计算机不把它存储为两个可以精确表示的整数的分数呢?

  • 每当数字被用于显示时,它都可能被转换为不准确的浮点数。
  • 每次用于进一步计算时,都包含分数。

这应该从根本上解决了不准确的问题,但这并不是所有的天才,那么这个理论有什么问题呢?

。您希望存储数字0.1并将其用于进一步的计算。不是将其存储为0.1,而是将其存储为1/10(因此需要更多的字节来存储分数)。然后,如果你需要把它乘以另一个数字,比如5,你现在也要把误差乘以3。如果用1/10乘以3,就得到1/10*3 = 3/10。当你需要显示它时,3/10可能会变得不准确。在那之前,不存在不准确的问题。

除了无法使用诸如sqrt(由MSalters提到)之类的非理性函数之外,您还面临着理数很容易溢出的问题(例如尝试将一对相乘,或使用迭代例程,如牛顿方法)。当然,你可以使用任意精度的整数,但这样它们就会很慢,而且你必须将这些大量的数字存储在内存中。

小数并不重要。经典的用例是钱,直到有人足够聪明地意识到你可以用整分来工作。

重要的是要明白,现实对任何碱基都没有偏好,当然不是来自智人手指的中位数的碱基。

比值也不能代表sqrt(2)arctan(1)。这些现实中出现的数字类型。

最新更新