【发布时间】:2017-06-28 08:24:05
【问题描述】:
定点数至少需要多少位才能与浮点数一样精确?如果我想用定点算术而不是浮点进行计算,我需要多少位才能使计算不那么精确?
单精度(32 位)浮点数可以表示小至 2^-126 大至 2^127 的数字,是否意味着定点数必须至少为 128.128 格式? (整数部分128位,小数部分128位)。
我知道单精度浮点数一次只能表示约 7 个十进制数字的范围,我在询问所有可能的值。
那么双精度(64 位浮点数)呢,真的需要 1024.1024 格式才能同样精确吗?
【问题讨论】:
-
请注意,128.128 浮点数实际上比 IEEE-754 浮点数更精确,因为后者有间隙(因为使用了有限尾数和指数)。浮点数或多或少是一种指数格式,具有固定大小的尾数/有效数,大于或小于范围 [1.0, 2,0) 的值是通过乘以 2^exponent(和一个符号)得出的——请注意,我没有讨论非规范化或NaN或无穷大。定点格式不会有任何间隙。无论如何,这是有道理的,因为浮点数有 32 位,而 128.128 的定点数将有 256。
-
但是你真的需要所有这些值吗?查看特定应用所需的值范围,并确定需要多少位。我想你可以节省一些。
-
@RudyVelthuis “请注意,128.128 浮点数实际上会更精确” - 对于几乎所有值,都是真的。 “你真的需要所有这些价值观吗?”可能不是,但我仍然很好奇需要多少位才能达到与浮点数相似的精度,尤其是对于边缘情况。
-
应该不难发现:最小的非正规是尾数中的 1(最低)位和最小指数(-126,IIRC,但不要让我失望) .
标签: floating-point precision fixed-point single-precision