Java中如何测试NaN

7
我想知道在Java中是否有一种方法来测试NaN。下面的代码返回NaN,而应该返回“NA”。
if (tempAlloc == Double.NaN) {
                tv4.setText("NA");
            } else {
                tv4.setText(customFormat("###.#%",
                        Double.toString(tempAlloc)));
            }
1个回答

26

使用Double.isNaN(tempAlloc)。 当参数是NaN时返回true,否则返回false

这是通过检查参数是否不等于自身来实现的(这是NaN值的一个独特属性):

boolean isNaN == tempAlloc != tempAlloc;

1
我不确定我理解您在这里的意思以及如何在上面的代码中实现它。 - locoboy
1
@cfarm54: 当参数为NaN时,Double.isNaN()返回true。因此,请直接在您的代码中将tempAlloc == Double.NaN替换为Double.isNaN(tempAlloc) - Joachim Sauer
1
使用 if (Double.isNaN(tempAlloc))NaN 不等于它们自己。 - Nishant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接