可以将浮点(或双精度)设置为 NaN 吗?
Posted
技术标签:
【中文标题】可以将浮点(或双精度)设置为 NaN 吗?【英文标题】:Can float (or double) be set to NaN? 【发布时间】:2011-11-17 04:02:17 【问题描述】:注意:类似于Can an integer be NaN in C++?
我知道这没有什么实际用途,但可以将 float
或 double
设置为 NaN
吗?
【问题讨论】:
我不会说没有什么实际用途。例如,我使用这种方法在双精度表中指定失败的结果。 【参考方案1】:Float 对象包含一个静态值,它是一个float
类型,称为NaN
。
所以
float myFloat = Float.NaN;
给你你的要求。
http://download.oracle.com/javase/6/docs/api/java/lang/Float.html#NaN
【讨论】:
我认为这只是包装类的常量表示(但常量仍然是有效数字)?我正在寻找将float
或 double
设置为 NaN,从而使其无法在任何算术中使用。
不,常量是原始类型的。
好的,抱歉,您在我完成此评论之前进行了编辑,感谢您的澄清。【参考方案2】:
是的
float f = Float.NaN;
请参阅the doc 了解更多信息。请注意,如果要将数字与 NaN 进行比较,则应使用 isNan()。
尽管您有上述问题,但这确实有实际目的。您可以使用它来指示尚未设置/提供的值。
【讨论】:
【参考方案3】:当然! NaN 是 Float 和 Double 类中的静态常量。
double x = Double.NaN;
【讨论】:
以上是关于可以将浮点(或双精度)设置为 NaN 吗?的主要内容,如果未能解决你的问题,请参考以下文章
在浮点数列表中查找 NaN 并将上一个和下一个元素设置为 NaN