在测试我正在开发的应用程序时,我遇到了一个奇怪的问题,我的应用程序在模拟器上运行良好,但在我的设备上崩溃了(华为p9,我不知道这是否真的很重要)。似乎这两行代码是崩溃的原因(应用程序在删除此格式化代码后在设备上运行良好):
val formatedBruttoPrice = "%.2f".format(price).toDouble() // price is a double
val formated = "%.2f".format(totalPrice).toDouble() // totalPrice is also a double
我得到java.lang.NumberFormatException: For input string: "2,0"
的错误知道为什么吗?如何解决这个问题?
这是由于语言环境的差异。由于英语语言环境,模拟器将2.0
转换为"2.0"
,但您的设备使用其他东西生成"2,0"
。然后你调用.toDouble()
,所以它尝试解析。从double到string再到double。只需删除.toDouble()
调用并使用字符串代替。