0

这是我的应用程序的片段,用于使用 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”,如果我看到存储在 list[] 中的值带有“,”(29,32 - 34,56 - ...)而不是“。” (29.32 - 34.56 - ...)就像在模拟器上一样。

为什么会这样?我能怎么做?

提前谢谢!

4

2 回答 2

4

您遇到此问题可能是因为您的设备语言,只需强制分隔符为逗号即可。

DecimalFormat twoDForm = new DecimalFormat("#.##");
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(',');
twoDForm.setDecimalFormatSymbols(dfs);
于 2013-05-15T08:49:08.173 回答
1

它是关于十进制格式字符的。将您的模拟器、windows 设置为语言环境匈牙利语或罗马尼亚语,作为您的设备,而不是点,您将使用逗号作为小数分隔符!

有两种方法可以解决这个问题。一种是强制区域设置,另一种是仅强制使用小数分隔符。

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

于 2013-05-15T08:31:36.917 回答