Android - 无效的双重"#,##"

时间:2015-11-25 11:38:17

标签: java android

我的应用的用户出错并且应用崩溃了

我查看过该报告及其陈述

引起:java.lang.NumberFormatException:无效的double:" 1,36"

我已经复制了在我的应用中输入的数据,但我根本没有这个问题

我甚至要求她将她的数据库发送给我,以便我可以导入确切的数据,但它仍然适用于我

我对双重格式的格式感到困惑,因为我无法在代码中的任何位置查看格式化的内容,

有关进展情况的任何建议?

3 个答案:

答案 0 :(得分:2)

简单的方法是(在你的行为之上):

double old_b = b;
b -= a / i;
if (b == old_b) break;

答案 1 :(得分:1)

我刚遇到同样的问题。我正在将浮点值转换为String。是的,它必须是区域设置问题。正如其中一条评论中所述,某些语言环境使用小数分隔符。 最初我正在转换浮动状态 -

String.format("%.1f", value);

然后我将代码更改为

String.format(Locale.ENGLISH, "%.1f", value);

因此,强制使用英语本地转换字符串为我工作。

答案 2 :(得分:1)

您似乎遇到了区域设置问题。不同的区域设置将.,作为小数部分分隔符。您可以使用java.text.NumberFormat来处理所需的区域设置,例如FRANCE代表逗号,US代表点:

// somewhere at Utils.java:

public static final NumberFormat DOUBLE_FORMAT = NumberFormat.getInstance(Locale.FRANCE);

// at call site:

double d = Utils.DOUBLE_FORMAT.parse("1,234").doubleValue();