【发布时间】:2016-06-15 17:47:27
【问题描述】:
我正在尝试确定 String 是否代表 Double。我希望下面的代码会抛出一个NumberFormatException:
String s = "type1234";
try {
Double val = Double.parseDouble(s);
} catch (NumberFormatException e) {
// Handle exception
e.printStackTrace();
}
相反,val 以 Infinity 结尾。我在标准 JVM 中运行代码,它确实抛出了 NumberFormatException
Android 似乎忽略了前导字符 'typ',然后将其解析为 e^1234,超出了 Double 的范围。
这是预期的行为吗?如果是这样,确定String 是否可以解析为Double 的更可靠方法是什么?
【问题讨论】:
-
你真的让我好奇.. 是的,它导致
Infinity这似乎是一个明显的错误。 Android 使用 OpenJDK 6?顺便说一句,如果这个理论是正确的,它不会将其解析为 e1234 而是 101234 但相同的想法。 -
正确,因为科学记数法。例如,1.5e2 = 150。在我的情况下,我猜它正在解析 1e1234,并且由于双精度的最大指数是 1023,它估计它为
Infinity