在matlab中NaN的确切值是多少?

use*_*128 4 double matlab nan

需要在matlab和一些DLL函数之间来回传递一些数据,有一点可以看出我们在matlab中不知道NaN的精确数值,因此会有一些不必要的数据处理来考虑这些值.

有人知道matlab中NaN的确切值或至少值的范围吗?

我最感兴趣的是了解以下两种主要类型:

(1)浮法NaN(32);

(2)NaN为双(64).

Bri*_*n L 6

根据Mathwork的文档,NaN返回非算术的IEEE算术表示.NaN始终处于浮点表示(浮点或双精度) - 我不相信存在整数NaN.

在IEEE 754中,NaN表示为浮点数,所有指数位设置为1,小数部分表示任何非零值(因此实际上有很多方法表示一般NaN).请参阅此处的 "特殊值" .

手动测试NaN的最可靠方法不是寻找特定值,而是测试所有指数位都已设置且小数部分为非零.


Edr*_*ric 5

NaN您可以使用 来检查特定 MATLAB 使用的位模式format hex

>> format hex
>> NaN
ans =
   fff8000000000000
>> single(NaN)
ans =
   ffc00000
Run Code Online (Sandbox Code Playgroud)

如果您确实愿意,可以使用 构建其他 NaN typecast,如下所示:

>> format long
>> otherNan = typecast( 1 + typecast( single(NaN), 'int32' ), 'single' )
otherNan =
   NaN
>> isnan(otherNan)
ans =
     1
>> format hex
>> otherNan
otherNan =
   ffc00001
Run Code Online (Sandbox Code Playgroud)