Android parseDouble在应该抛出NumberFormatException时返回Infinity

时间:2012-10-26 21:53:18

标签: android parsing double

我正在尝试确定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的更可靠方法是什么?

2 个答案:

答案 0 :(得分:2)

如果您不信任该框架,请使用正则表达式来验证自己。以下是一种实现此目的的方法示例。

    // You can get much fancier than this to handle all cases, but this should handle most
    String regexDouble = "^-?\\d*(\\.\\d+)?$";
    boolean isDouble = val.matches(regexDouble);

答案 1 :(得分:1)

Fastest way to check if a String can be parsed to Double in Java

这篇文章的答案适用于android。我在ICS上测试了它。