java - 如何将不同的数字类型转换为Double?

标签 java casting double

Hashmap 包含一个键,其值可以是 IntegerDouble

如果值的类型为 Double,则此方法有效,但对于 Integer 类型则失败:

Double value = (Double) locationMap.get("key");

不幸的是我似乎无法控制类型,因为它是从服务器传输的 JSON 数据。显然,即使数字在传输之前是服务器端(Javascript)的 double 类型,但没有十进制数字,它也会在沿线的某个地方被解释为 Integer在客户端(Java)。

考虑可能的Integer值并将其转换为Double的最短方法是什么?

最佳答案

假设您知道它是一个 Number(例如,您首先使用 instanceof 进行测试):

Double value = ((Number) locationMap.get("key")).doubleValue();

如果数字已经是Double,则效率很低。您可能需要定义一个方法来专门处理该问题:

// Doesn't handle null.
Double toDouble(Number n) {
  return (n instanceof Double) ? (Double) n : Double.valueOf(n.doubleValue());
}

Double.valueOf 看起来多余,但如果使用条件表达式来避免第二个操作数 ( see this ) 拆箱,则这是必需的。

关于java - 如何将不同的数字类型转换为Double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55362823/

相关文章:

java - eclipse 如何检测该项目已经存在,而不是创建该项目,而是导入它?

java - JSON - 简单获取 Integer 而不是 Long

java - 将浮点值分配给 double 值

java - 为什么Java除以0.0时不抛出异常?

java - 如何从 double 中删除 ".0"?安卓工作室

java - com.sun.net.httpserver 包中是否有使用 session 的类?

java - 当值对顺序不正确时如何比较 <String, List<String>> 的 HashMap

swift - Swift 中的类型检查是如何工作的

Java bufferreader 在 ctrl z 上崩溃

c - 以不同类型访问数组成员的正确方法?