【发布时间】:2011-07-21 14:48:22
【问题描述】:
Java 中 Double.NaN 的 Objective-C 等价物是什么?我有一个返回双精度的函数,但它有两种情况可以返回Double.NaN。我将如何在 Objective-C 中实现它?
【问题讨论】:
-
你的函数返回原始
double还是对象NSNumber?
标签: java objective-c floating-point nan porting
Java 中 Double.NaN 的 Objective-C 等价物是什么?我有一个返回双精度的函数,但它有两种情况可以返回Double.NaN。我将如何在 Objective-C 中实现它?
【问题讨论】:
double还是对象NSNumber?
标签: java objective-c floating-point nan porting
double nan = NAN;
很简单。 :)
【讨论】:
#include <math.h>
...
return NAN;
就这么简单。如果由于某种原因你不能包含<math.h>,你也可以使用
return __builtin_nan("");
使用 GCC 或 clang。
顺便说一句,就像 Objective-C 的大多数低级语言特性一样,它直接继承自 C。C 规范的相关部分是 §7.12:
当且仅当实现支持浮点类型的静默 NaN 时,才会定义宏
NAN。它扩展为一个 float 类型的常量表达式,表示一个安静的 NaN。
在学习 Objective-C 时,请记住,每个 C 程序都是 Objective-C 程序,使用 C 语言特性来解决问题并没有错。
【讨论】: