定点数和浮点数的计算机体系结构有哪些优点/缺点?我可以理解,两者都会导致各种不准确。
我的其他问题是
这些不准确是如何产生的?
一种形式比另一种更好吗?
定点数和浮点数的计算机体系结构有哪些优点/缺点?我可以理解,两者都会导致各种不准确。
我的其他问题是
这些不准确是如何产生的?
一种形式比另一种更好吗?
来自浮点指南:
为什么需要浮点数
由于计算机内存有限,无论使用二进制分数还是十进制分数,您都无法以无限精度存储数字:在某些时候您必须切断。但是需要多少准确度?它在哪里需要?有多少个整数位和多少个小数位?
- 对于建造高速公路的工程师来说,它是 10 米还是 10.0001 米宽并不重要——他的测量结果可能一开始就没有那么准确。
- 对于设计微芯片的人来说,0.0001 米(十分之一毫米)是一个巨大的差异——但他永远不必处理大于 0.1 米的距离。
- 物理学家需要在同一个计算中同时使用光速(约 300000000)和牛顿引力常数(约 0.0000000000667)。
为了满足工程师和芯片设计者的要求,数字格式必须为不同数量级的数字提供准确性。但是,只需要相对精度。为了让物理学家满意,必须能够进行涉及不同数量级的数字的计算。
基本上,具有固定数量的整数和小数位数是没有用的 - 解决方案是带有浮点的格式。
至于你的其他问题:
话虽如此,浮点与定点的问题经常与二进制与十进制相混淆 - 具体而言,人们经常将二进制浮点格式与(隐式)十进制定点格式进行比较。不能准确地表示小数是让大多数人感到惊讶的事情,因此他们认为这是“浮点格式”的一个很大的缺点,而实际上它是二进制格式的一个缺点,而且他们一点也不惊讶于不能准确地表示像 1/3 这样的数字。
您尚未指定您正在使用哪种编程语言,但是,大多数编程语言没有内置的定点类型。
C 和 C++ 等主流语言具有整数类型和浮点类型。如果您打算使用具有四位小数的定点类型,则必须在现有整数类型之上实现它。或者,使用现有库。
当谈到哪个更好的问题时,答案是“视情况而定”。你必须考虑的事情是:
您打算使用哪种硬件?大多数现代主机 (PC:s) 都有专用的浮点硬件,高端嵌入式系统也是如此。但是,在使用低端嵌入式系统时则不然,所以它必须按照现有的汇编指令来实现浮点运算。
您的应用程序的性质是什么?它是否可以自然地使用四位小数。如果在最低有效位等处出现舍入错误会发生什么。