如何检查双精度数是否为空?

新手上路,请多包涵

我正在查询一个数据库,我得到的一些结果是空的。我将这些值设置为数据类型为 double 的变量。我们称变量为“结果”。所以我尝试设置一个 if 语句来查看它等于 Null ,这当然不起作用。这是我对该 if 语句的代码:

 if (results == null)
{
     results = 0;
}

我使用此代码得到的错误是:

 The operator == is undefined for the argument type(s) double, null

有没有更好的方法来确定它是否为空?

原文由 pallasmedia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 815
2 个回答

我建议使用 Double 不是您的类型的 两倍,然后检查空值。

原文由 Toby Samples 发布,翻译遵循 CC BY-SA 4.0 许可协议

首先,Java double 不能是Java null ,不能与 null 相比较。 ( double 类型是原始(非引用)类型,原始类型不能是 null 。)因此我假设如下:

  • 您尝试检测的“null”是存储在您查询的数据库中的 NULL。
  • 您正在使用 JDBC 查询数据库。

如果您调用 ResultSet.getDouble(...) ,返回 double 而不是 Double ,记录的行为将作为零返回。 (请参阅上面链接的 javadoc。)如果零是该列的合法值,那也无济于事。

result 的声明类型更改为 Double 而不是 double 按照 Toby 的回答 建议 将无济于事。当数据库包含 NULL 时,分配给 result 的值将是 Double(0.0) ,而不是 null

以下是两个可行的选项:

getObject 方法将传递一个(非 NULL)值作为 Double (假设列类型为 double )。记录为 NULL 返回 null 。 (有关更多信息, 此页面 记录了 SQL 类型到 Java 类型的默认映射,因此您应该期望交付什么实际类型 getObject 。)

原文由 Stephen C 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题