如何将双值设置为"非值"

Ank*_*kur 25 java double undefined

我在一个对象中有两个双数据元素.

有时它们被设置为适当的值,有时则没有.如果没有填写接收它们的值的表单字段,我想将它们设置为某个值,告诉我,在其余代码中,表单字段保留为空.

我不能将值设置为null,因为这会产生错误,是否有某些方法可以使它们"未定义".

PS.我不仅不确定这是否可能,它可能也没有意义.但如果对于这种情况有一些最佳实践,我会热衷于听到它.

Jon*_*eet 49

两个明显的选择:

  • Double而不是double.然后你可以使用null,但你已经大大改变了所涉及的内存模式.
  • 使用"非数字"(NaN)值:

    double d = 5.5;
    System.out.println(Double.isNaN(d)); // false
    d = Double.NaN;
    System.out.println(Double.isNaN(d)); // true
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,对"正常"数字的一些其他操作也可以给出NaN值(例如,0除以0).

  • 小心`NaN`使用`==`与它们总是返回`false`,甚至`Double.NaN == Double.NaN`是'false`.你必须使用`Double.isNaN(...)`来检查`double`是不是一个数字. (8认同)