似乎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");
使用双倍工作。
答案 0 :(得分:7)
NaN
是一个特定于内部表示浮点数({C}中的float
和double
的方式(IEEE 754)的值。 Is不适用于整数数据类型,因为它们可能以完全不同的方式表示。
作为一种变通方法,您可能会看到人们使用单独的布尔标志来指示值是有效还是极值INT_MIN
/ INT_MAX
。尽管如此,为确保有效值,这些与NaN
一样好。
答案 1 :(得分:4)
NAN是IEEE 754标准的浮点值(参见http://en.wikipedia.org/wiki/NaN)
大多数固定大小的整数格式没有任何明确指示无效数据的方法。