如何将变数类型转换为Double?

问题描述 投票:0回答:1

Hashmap包含一个值为IntegerDouble的键。

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

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

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

什么是考虑可能的Integer值并将其投射到Double的最短路径?

java casting double
1个回答
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)的拆箱,则是必要的。

© www.soinside.com 2019 - 2024. All rights reserved.