【发布时间】:2012-06-10 13:55:54
【问题描述】:
我已经阅读了很多关于浮点数和计算机处理的浮点运算的内容。我在阅读它们时看到的最大问题是为什么它们如此不准确?我理解这是因为二进制不能准确地表示所有实数,所以这些数字被四舍五入到“最佳”近似值。
我的问题是,知道了这一点,为什么我们仍然使用二进制作为计算机操作的基础?使用大于 2 的基数肯定会以指数方式提高浮点运算的准确性,不是吗?
相对于其他基数,计算机使用二进制数系统有什么优势,是否曾尝试过其他基数?还是有可能?
【问题讨论】:
-
因为一个开关只能打开或关闭,而一台计算机是一堆非常小的开关。
-
这个其实已经研究过了,有一定的理论优势。例如,您可能想查找“多值逻辑电路”。
-
十进制也不准确 - 例如,您不能将 1/3 表示为十进制。
-
实际上,没有浮点基数可以让所有数字都具有有限表示。 Base-10 有诸如 1/3、1/7 等(有理数)和 e 和 pi(非有理数)之类的东西,它们没有有限的表示要么。更好的问题是您的特定问题需要多少精度 - 您可以使用浮点数,还是需要双精度数(对于那些支持它们的编译器,甚至是长双精度数)?
-
@twalberg 正是。所有数字唯一真正准确的符号是对如何获得该数字的描述。在有趣的逻辑扭曲中,这使得符号变得毫无意义!
标签: c binary floating-point hardware computer-science