Android - 仅在Real Device上出现双值错误

时间:2013-05-15 08:22:06

标签: android graph double achartengine

以下是我的应用片段,用于显示使用achartengine的图表:

private void addSampleData() {
...
DecimalFormat twoDForm = new DecimalFormat("####.##");
for(i=0; i<count; i++){
   list[i] = Double.valueOf(twoDForm.format(list[i])); 
   mCurrentSeries.add(i, list[i]);
}
...
}

当我在模拟器上运行我的应用程序时没有任何问题(使用任何设备和任何api),但是当我在我的真实设备上运行应用程序时,我得到如下错误:“Inavlid Double:29,32”和如果我看到列表[]中存储的值,它们是“,”(29,32 - 34,56 - ...)而不是“。” (29.32 - 34.56 - ...)就像在模拟器上一样。

为什么会这样?我该怎么办?

提前谢谢!

2 个答案:

答案 0 :(得分:4)

您可能因为设备的语言而遇到此问题,只需将分隔符强制为昏迷。

DecimalFormat twoDForm = new DecimalFormat("#.##");
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(',');
twoDForm.setDecimalFormatSymbols(dfs);

答案 1 :(得分:1)

它是关于十进制格式字符。 将你的模拟器,windows设置为匈牙利语或罗马尼亚语,作为你的设备而不是点,你将昏迷作为小数分隔符!

有两种方法可以解决这个问题。一种是强制一个Locale,只强制一个十进制分隔符。

我懒得提供完整的代码,我希望它有助于这个想法,你会得到快速的谷歌。