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

时间:2019-03-26 17:17:45

标签: java casting double

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

如果值的类型为Double,但对于类型为Integer失败,则可以使用:

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

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

说明可能的Integer值并将其强制转换为Double的最短方法是什么?

1 个答案:

答案 0 :(得分:3)

假设您知道它是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)的拆箱,则是必需的。