Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Floating point 究竟定点比浮点精确多少_Floating Point_Fixed Point - Fatal编程技术网

Floating point 究竟定点比浮点精确多少

Floating point 究竟定点比浮点精确多少,floating-point,fixed-point,Floating Point,Fixed Point,我(想)我理解二进制小数的定点和浮点表示法。然而,我经常看到固定点在较小范围内被描述为更精确,而浮点在较大范围内被描述为较不精确。现在,如果我理解正确的话,浮点不准确是因为它不能代表0.1,因此许多其他实数=我认为定点也有同样的问题,那么如何描述它更“准确”。如果我没有弄错的话,冯·诺依曼似乎也支持这一观点,他说我们不应该使用浮点,而应该使用固定的,但是为什么呢?当使用32位作为浮点表示时,它们通常被分为1位编码符号,8位编码指数,23位主要编码有效位。由于对指数进行了一些特殊处理,完整有效位有

我(想)我理解二进制小数的定点和浮点表示法。然而,我经常看到固定点在较小范围内被描述为更精确,而浮点在较大范围内被描述为较不精确。现在,如果我理解正确的话,浮点不准确是因为它不能代表0.1,因此许多其他实数=我认为定点也有同样的问题,那么如何描述它更“准确”。如果我没有弄错的话,冯·诺依曼似乎也支持这一观点,他说我们不应该使用浮点,而应该使用固定的,但是为什么呢?

当使用32位作为浮点表示时,它们通常被分为1位编码符号,8位编码指数,23位主要编码有效位。由于对指数进行了一些特殊处理,完整有效位有24位。在这种格式中,浮点数的分辨率为223的1部分,即更改低位会将表示的值更改为2−是高位值的23倍

当使用32位作为定点表示时,高位通常用于表示符号,因此最高值位是次高值位,它表示低位值的230倍。因此,使用这种格式,定点数字的分辨率是230分之一

因此,使用相同的位数,定点比浮点具有更高的分辨率。即使使用其他选项来选择要为哪些部分使用多少位,浮点也需要为指数使用一些位,而定点使用零,因此定点总是比浮点具有更高的分辨率

浮点提供了动态范围,这意味着它可以通过在计算中改变指数来处理大的或小的数字。定点只有静态范围它可以表示大数字或小数字,但在设计代码时必须选择范围。(在某种程度上,这是可以精细化的,例如为输入值选择一个小范围,然后随着值相加而增加范围,以形成越来越大的总和或其他结果。但是,每个特定计算的比例必须在设计时选择。)如果您需要更高的分辨率,而不需要动态范围,然后使用定点。如果需要动态范围而不需要更高的分辨率,则使用浮点。如果两者都需要,请使用更多位


请注意,固定刻度意味着定点有时不如浮点精确。浮点调整其刻度,将前导数字移动到高位,直到其指数范围的极限。因此,在上述格式中,它将分辨率保持在1/223左右。但固定点仍停留在设计时选择的比例上。如果它需要表示一个数值,其大小落在定点格式的第2位,则该数值的分辨率仅为1/22左右。

在定点格式中也不能精确表示0.1,这与浮点与固定无关。@ElliotAlderson:定点和浮点都不一定是基于二进制的。0.1可以用基于十进制的定点和浮点格式表示。@EricPostIschil同意,但是OP特别询问“二进制”中的固定和浮点表示。