gpt4 book ai didi

java - 欧洲版本的 Android 上的 NumberFormatException?

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:55 25 4
gpt4 key购买 nike

我有一个在启动时运行以下两行代码的应用程序:

DecimalFormat decim = new DecimalFormat("#.00");
return Double.parseDouble(decim.format(totalNumberOfCredits));

当我在我的美国手机上启动应用程序时,decim.format(totalNumberOfCredits) 的值为 .00

但是,在我的 Google Play Developer Console 中,我遇到了十几次崩溃,所有崩溃都如下所示:

Caused by: java.lang.NumberFormatException: Invalid double: ",00"
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseDouble(StringToReal.java:269)
at java.lang.Double.parseDouble(Double.java:295)

DecimalFormat 真的有可能在欧洲手机上生成逗号版本的小数吗?

最佳答案

Is it really possible that DecimalFormat is producing a comma version of the decimal on European phones?

是的,绝对是。就是这样meant to do ,毕竟:

Creates a DecimalFormat using the given pattern and the symbols for the default locale. This is a convenient way to obtain a DecimalFormat when internationalization is not the main concern.

To obtain standard formats for a given locale, use the factory methods on NumberFormat such as getNumberInstance. These factories will return the most appropriate sub-class of NumberFormat for a given locale.

请注意,这不是“欧洲版 Android”的问题 - 这只是在默认语言环境使用 , 作为小数点分隔符的上下文中使用 Android 的问题。

如果你想使用特定语言环境的符号,但使用特定的模式,你可以使用:

DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(Locale.US);
DecimalFormat format = new DecimalFormat("#.00", symbols);

话虽如此,您一开始并不清楚您要做什么 - 为什么要格式化然后解析数字?当你真的不需要它们时,你几乎应该总是避免字符串转换。为什么不直接转换呢? (我们不知道 totalNumberOfCredits 是什么,这没有帮助。)

关于java - 欧洲版本的 Android 上的 NumberFormatException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21646746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com