【问题标题】:NaN and +-INF in floating point number system following IEEE754IEEE754 浮点数系统中的 NaN 和 +-INF
【发布时间】:2014-03-01 09:39:46
【问题描述】:

在标准中,NaNINF的表示是这样的:

对于 NaN:指数 = emax+1 & 尾数 != 0;

对于 INF:指数 = emax+1 & 尾数 = 0;

他们有很多方法和计算得出这两个值。

NaN(INF) 究竟是什么?

以及如何系统“决定”或“判断”将价值存储为这一个(两个)?

这可能是一个我觉得很奇怪的案例:

a = b = 1*2(emax);

然后计算c = a+b,实际结果为1*2^(emax+1);

现在,根据标准,c 不是可用的 FP 值;

那么系统如何将c存储到设备中呢?

NaN 吗?

如果是,这怎么可能是合理的?

我的意思是,1*2^(emax+1) 是(应该是)一个数字...在常识中...?

如果是这种情况,那么标准究竟如何看待 NaN 是什么?

如果不是,那我们该如何处理???

我正在考虑这样一个:

令 eM = emax+1;

那么 1d.d...d * 2^(eM-1) = 1d.d...d * 2^(emax)

其中 1d.d...d 具有系统的合法位数。

这实际上是一种处理非规范化数字的方式。


这里的事情是这样的:

判断是后验还是先验计算完成?

如果是前者,上面的可能有问题吗?

另一方面,任务似乎无法完成……

有人想过这个问题吗?

谢谢考虑!!

注意:+-INF 的东西也会出现。

【问题讨论】:

标签: language-agnostic system ieee-754 floating


【解决方案1】:

来自Wikipedia

五个可能的例外是:

  • 无效运算(例如,负数的平方根)(默认返回 qNaN)。
  • 除以零(对有限操作数的运算给出精确的无限结果,例如 1/0 或 log(0))(默认返回 ±infinity)。李>
  • 溢出(结果太大而无法正确表示)(默认返回±infinity(用于四舍五入模式)。
  • 下溢(结果非常小(超出正常范围)且不精确)(默认返回非规范化值)。
  • ...

【讨论】: