以下是我的应用片段,用于显示使用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 - ...)就像在模拟器上一样。
为什么会这样?我该怎么办?
提前谢谢!答案 0 :(得分:4)
您可能因为设备的语言而遇到此问题,只需将分隔符强制为昏迷。
DecimalFormat twoDForm = new DecimalFormat("#.##");
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(',');
twoDForm.setDecimalFormatSymbols(dfs);
答案 1 :(得分:1)
它是关于十进制格式字符。 将你的模拟器,windows设置为匈牙利语或罗马尼亚语,作为你的设备而不是点,你将昏迷作为小数分隔符!
有两种方法可以解决这个问题。一种是强制一个Locale,只强制一个十进制分隔符。
我懒得提供完整的代码,我希望它有助于这个想法,你会得到快速的谷歌。