当前位置: 首页 > 面试题库 >

Android NumberFormatException:无效的Double-除非该值是有效的Double

武向文
2023-03-14
问题内容

因此,前几天,在Google Play开发者控制台的“崩溃”部分中弹出以下错误:

java.lang.NumberFormatException: Invalid double: "−0.05"

现在,如果我错了,请更正我,但这实际上是有效的双精度型-在我的计算机,模拟器和我自己的Android设备(Nexus
5)上,该双精度型均被视为有效的双精度型。

它崩溃的设备是运行Android 4.3的Galaxy Note II-关于它为什么可能崩溃的任何想法吗?


问题答案:

根据您的区域设置,它是否为有效的双精度数。在US /
ENGLISH语言环境中,-0.05是有效的双精度数,但在FRENCH语言环境中,则不是(应该是-0,05逗号)。

您可以通过以下方式查看它的运行情况:

NumberFormat fmt = NumberFormat.getNumberInstance(Locale.US);
double d = fmt.parse("-0.05").doubleValue(); //-0.05

fmt = NumberFormat.getNumberInstance(Locale.FRENCH);
d = fmt.parse("-0.05").doubleValue(); //-0.0
d = fmt.parse("-0,05").doubleValue(); //-0.05

编辑

但是,您的问题可能不是那样。减号无效。您正在使用而不是-(它们看起来相同,但字符不同)。演示:

Double.parseDouble("-0.05"); //ok
Double.parseDouble("−0.05"); //exception


 类似资料:
  • 问题内容: 在Swift中,如何检查字符串是否为有效的双精度值?我已经使用从下面的扩展这个问题的(但为float),但如果该值不能被转换,它简单地返回“0”: 理想情况下,我希望它返回,以便可以将其包含在中,如下所示: 问题答案: 确实,每次执行转换时不创建数字格式化程序会更有效:

  • 当我在Kubuntu 17.04上使用Ionic 3安装了Java8时,我在签署一个Ionic android apk时遇到了这个错误 我得到的错误是: java版本 我已经安装了Android Studio,它运行良好,我测试了应用程序源代码,它在模拟器上运行没有问题。

  • 问题内容: 我试图确定用户输入的内容是否包含有效或有效的内容。如果输入是an 或a,则程序应声明。 这是我的代码: 编辑:对不起,困惑的家伙。““令牌[]”是一个字符串数组。 如果用户输入make = number ( 数字 为),我试图让我的程序打印“ Invalid Make” 问题答案: 您可以编写一个函数来测试它,方法是在不喜欢它时调用并捕获(它将处理和值) 那你可以这样称呼它 而有实力的

  • 列出dataListWidget(AsyncSnapshot快照){return snapshot.data.docs[0].map((文档){return ListTile(标题:Text(文档[“Name]”),副标题:Text(文档[“City”]),;})。toList();} //我的streamBuilder StreamBuilder(流:firestore.collection('

  • 问题内容: 我写了以下脚本: 但是我得到了这个结果,并发生了错误: 看来输入元素太小,以至于python将它们设为零,但是除法确实有其结果。 如何解决这类问题? 问题答案: 您无法解决。简单地说,您不能执行零除。 发生这种情况是因为2的指数非常大,为负数,因此结果四舍五入为零。 在这种情况下,由于除以零而返回。 现在,要解决您的问题,您可以: 去像mpmath这样的高精度数学图书馆。但这没那么有趣

  • 问题内容: 我正在尝试使用Spring @Transactional批注,但是在调用 findAll 方法时出现问题,并且出现以下错误: 人DAO: 这是我的: 我尝试删除此行,但是又出现了一个错误,为什么这行不通? 问题答案: 您必须显式声明对事务管理器注释的支持 添加到您的配置中: tx是xmlns:tx =“ http://www.springframework.org/schema/tx”