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

标签 android parsing double

我正在尝试确定 String 是否表示 Double。我希望以下代码抛出 NumberFormatException:

String s = "type1234";

try {
    Double val = Double.parseDouble(s);
} catch (NumberFormatException e) {
    // Handle exception
    e.printStackTrace();
}

相反,valInfinity 结束。我在标准 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/

相关文章:

c++ - 断言 double 可以放入 int

iphone - 是否有适用于 Android 或 iPhone 的图像效果库(例如 lomo)?

Android 在第一个应用程序使用时注册到远程服务器

c++ - Boost Spirit 自动解析器因 double 元组而失败

C++ 将 1 加到非常小的数字?

gcc - double 和 ffast-math 上的自动矢量化

android - 当 child 高度不同时,RecyclerView 在向上滚动时会抖动

android - 在 android 中使用 wi-fi 进行点对点通信

ruby - block 缩进正则表达式

c++ - 使用 find 解析文件会给出不同文件的奇怪结果