【问题标题】:Objective-C: int can´t be NAN?Objective-C:int 不能是 NAN?
【发布时间】:2012-09-03 01:03:15
【问题描述】:

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");

双打就可以了。

【问题讨论】:

  • Objective-C 并不孤单……

标签: objective-c ios int double nan


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    According to wikipedia:

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

    【讨论】:

      猜你喜欢
      • 2011-04-05
      • 2019-03-26
      • 1970-01-01
      • 2016-02-04
      • 2019-10-31
      • 2019-04-12
      • 2016-03-12
      • 2011-03-29
      • 2011-10-22
      相关资源
      最近更新 更多