0

Objective-C の int は NAN にできないようです。この比較は false を返します。

int i = NAN;
NSLog(@"isNan: %@", (isnan(i)) ? @"YES" : @"NO");

int を NAN に設定する方法はありますか、または double を使用する必要がありますか?

double d = NAN;
NSLog(@"isNan: %@", (isnan(d)) ? @"YES" : @"NO");

ダブルで動作します。

4

2 に答える 2

6

NaN浮動小数点数 ( C ではfloatと) が内部的に表現される方法 (IEEE 754) に固有の値です。double整数データ型は完全に異なる方法で表現される可能性があるため、 Is は使用できません。

回避策として、別のブール値フラグを使用して、値が有効かどうか、または極端な値INT_MIN/を示す場合がありますINT_MAX。ただし、これらのいずれも、NaN有効な値を保証するのには適していません。

于 2012-09-10T07:30:42.443 に答える
3

NAN は、IEEE 754 標準の浮動小数点値です ( http://en.wikipedia.org/wiki/NaNを参照) 。

ウィキペディアによると

ほとんどの固定サイズの整数形式には、無効なデータを明示的に示す方法がありません。

于 2012-09-10T07:36:35.810 に答える