我正在尝试确定 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
的更可靠方法是什么?
最佳答案
如果您不信任该框架,请使用正则表达式来验证您自己。这是执行此操作的一种方法的示例。
// 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);
关于Android parseDouble 在应该抛出 NumberFormatException 时返回 Infinity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13094950/