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

时间:2016-09-05 09:38:27

标签: floating-point integer decimal floating-accuracy fractions

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

  • 每次使用该数字显示某处时,都可以将其转换为不准确的浮点数。
  • 每次用于进一步计算时,都包括分数。

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

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

2 个答案:

答案 0 :(得分:1)

除了你不能使用诸如sqrt之类的非理性函数(由MSalters提到)之外,你还有一个问题,即理性很容易溢出(例如尝试将一对夫妻相乘) ,或使用像牛顿方法那样的迭代程序)。当然你可以使用任意精度整数,但它们会很慢,你必须将那些大量的数字存储在内存中。

答案 1 :(得分:0)

小数并不重要。经典的用例就是金钱,直到有人聪明地意识到你可以使用积分美分。

重要的是要理解现实对任何基础都没有偏好,当然也不是因为智人的手指中位数而得出的基础。

就比率而言,它们也不能代表sqrt(2)arctan(1)。那些 是现实中出现的数字类型。