固定点数与浮点数

时间:2011-05-23 11:21:12

标签: floating-point floating fixed-point

固定点和浮点数的计算机体系结构有哪些优点/缺点?我可以理解,两者都导致各种不准确。

我的其他问题是

  1. 如何出现这些不准确之处?

  2. 一种形式比另一种更好吗?

2 个答案:

答案 0 :(得分:3)

来自The Floating-Point Guide

  

为什么需要浮点数

     

由于计算机内存有限,你   不能存储无限的数字   精确,无论你是否使用   二进制分数或十进制分数:at   有一点你必须切断。但   需要多少准确度?在哪里   它需要吗?多少位整数   以及多少位数?

     
      
  • 建筑工程师   高速公路,无论是否   它的宽度为10米或10.0001米 - 他的测量结果可能并不准确。
  •   
  • 设计微芯片的人,   0.0001米(十分之一毫米)是一个巨大的差异 - 但是   他永远不必处理   距离大于0.1米。
  •   
  • 物理学家需要使用速度   光(约3亿)和牛顿   引力常数(约   0.0000000000667)在同一计算中。
  •   
     

满足工程师和芯片   设计师,数字格式必须   提供非常精确的数字   不同的幅度。但是,只有   需要相对准确性。至   满足物理学家,一定是   可以进行计算   涉及不同的数字   大小

     

基本上,有固定数量的   整数和小数位数不是   有用 - 解决方案是一种格式   有一个浮点。

至于你的其他问题:

  1. 所有不准确之处都是由于一个原因:您试图将无限量的数据(例如所有有理数)放入有限的空间(例如64位)。格式之间唯一不同的是如何准确表示可以准确表示的数字。
  2. 浮点格式更好,期间。它们缺少定点共振峰的许多限制,尽管它们仍然有许多限制(几乎所有的定点格式都有)。
  3. 话虽如此,浮点与固定点的问题经常与二进制与十进制相混淆 - 具体而言,人们经常将二进制浮点格式与(隐式)十进制定点格式进行比较。不能准确地表示小数分数是大多数人感到惊讶的东西,因此他们认为这是“浮点格式”的一个很大的缺点,而实际上它是二进制格式的缺点,他们并不感到惊讶于不能够准确地表示1/3之类的数字。

答案 1 :(得分:0)

您尚未指定使用的编程语言,但是,大多数编程语言没有内置的固定点类型。

C和C ++等主流语言具有整数类型和浮点类型。如果你打算使用类似定点类型的东西,例如四位小数,你必须在现有的整数类型之上实现它。或者,使用现有的库。

当涉及到更好的问题时,答案是“它取决于”。你需要考虑的事情是:

  • 您打算使用哪种硬件?大多数现代主机(PC:s)都有专用的浮点硬件,同样也是高端嵌入式系统。但是,当使用低端嵌入式系统时,它不会,因此它必须根据现有的汇编程序指令实现浮点运算。

  • 您申请的性质是什么?是否可以自然地使用,例如,四位小数。如果在最低有效位等上出现舍入错误,将会发生什么。