0

似乎 Objective-C 中的 int 不能是 NAN。此比较返回 false。

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

有什么方法可以将 int 设置为 NAN,还是我必须使用双精度值?

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

加倍它可以工作。

4

2 回答 2

6

NaN是一个特定于浮点数(floatdouble在 C 中)在内部表示的方式(IEEE 754)的值。Is 不适用于整数数据类型,因为它们可能以完全不同的方式表示。

作为一种解决方法,您可能会看到人们使用单独的布尔标志来指示值是否有效,或者极端值INT_MIN/ INT_MAXNaN虽然,这些都与确保有效值一样好。

于 2012-09-10T07:30:42.443 回答
3

NAN 是来自 IEEE 754 标准的浮点值(参见http://en.wikipedia.org/wiki/NaN

根据维基百科

大多数固定大小的整数格式没有任何方式明确指示无效数据。

于 2012-09-10T07:36:35.810 回答