可以将浮点(或双精度)设置为 NaN 吗?

Posted

技术标签:

【中文标题】可以将浮点(或双精度)设置为 NaN 吗?【英文标题】:Can float (or double) be set to NaN? 【发布时间】:2011-11-17 04:02:17 【问题描述】:

注意:类似于Can an integer be NaN in C++?

我知道这没有什么实际用途,但可以将 floatdouble 设置为 NaN 吗?

【问题讨论】:

我不会说没有什么实际用途。例如,我使用这种方法在双精度表中指定失败的结果。 【参考方案1】:

Float 对象包含一个静态值,它是一个float 类型,称为NaN

所以

float myFloat = Float.NaN;

给你你的要求。

http://download.oracle.com/javase/6/docs/api/java/lang/Float.html#NaN

【讨论】:

我认为这只是包装类的常量表示(但常量仍然是有效数字)?我正在寻找将 floatdouble 设置为 NaN,从而使其无法在任何算术中使用。 不,常量是原始类型的。 好的,抱歉,您在我完成此评论之前进行了编辑,感谢您的澄清。【参考方案2】:

是的

float f = Float.NaN;

请参阅the doc 了解更多信息。请注意,如果要将数字与 NaN 进行比较,则应使用 isNan()。

尽管您有上述问题,但这确实有实际目的。您可以使用它来指示尚未设置/提供的值。

【讨论】:

【参考方案3】:

当然! NaN 是 Fl​​oat 和 Double 类中的静态常量。

double x = Double.NaN;

【讨论】:

以上是关于可以将浮点(或双精度)设置为 NaN 吗?的主要内容,如果未能解决你的问题,请参考以下文章

在浮点数列表中查找 NaN 并将上一个和下一个元素设置为 NaN

Objective-C - 对 nan 进行浮点检查

在 C 代码的 printf 语句中使用时,不会显示浮点或双精度值

以浮点或双精度形式获取字节值。

在floatf格式说明符和pow函数中C浮点或双精度

matlab矩阵--如何控制矩阵中小数点的位数