是否存在普遍接受的(浮点)NAN值

时间:2016-10-01 15:52:30

标签: java c++ c

(浮点数)#NAN("非数字")是否普遍分配了0x7F A0 00 00的值,或者它与不同的编译器有什么不同?

2 个答案:

答案 0 :(得分:5)

没有。如果就浮动物而言普遍接受某些东西的方向发生了什么,那么这将是相关的IEEE标准,但即使这个标准允许变化:

https://en.wikipedia.org/wiki/NaN

答案 1 :(得分:1)

IEEE 754(" IEEE浮点")将具有最大指数值的所有表示和有效数中的任何非零位定义为NAN。因此,单精度的有效测试将是:

uint32_t repr;
memcpy(&repr, &f, sizeof repr);
if ((repr & 0x7fffffff) > 0x7f800000) //...

在C中,如果您不接受IEEE算术,2.0+2.0==5.0是可能的,所以在实践中我们很多人都会假设它。它由标准的可选附件F规定。