我目前正在使用写入数据:
....
for (int i = 0; i < 3; i++) {
data = data + ";" + String.format("%.8f", values.toArray()[i]);
}
...
captureFile.println( data );
但我需要根据用户的喜好而不是语言环境来更改小数点分隔符(应用程序为英语,但是日志分析器可以使用Excel法语版本...
if (decimalSeparatorDot)
// use current format ( US ) dot
else
// String format with comma
感谢帮助
有没有一种方法可以轻松实现,还是应该将String.format更改为特定的Formatter?
我尝试了NumberFormat,如下所示:
NumberFormat nf;
boolean dot = false;
if (dot) {
nf = NumberFormat.getInstance(Locale.US);
((DecimalFormat) nf).applyPattern("#0.00000000");
} else {
nf = NumberFormat.getInstance(Locale.FRENCH);
((DecimalFormat) nf).applyPattern("#0,00000000");
}
...
for (int i = 0; i < 3; i++) { data = data + ";" + nf.format(values.toArray()[i]); }
it's working fine when dot is true ( current app Locale US ..) but it's giving all values to 0,000000000 when dot is false ( french)
最佳答案
不知道这是否是最好的方法,但是现在可以使用:
NumberFormat nf= null;
try {
if (decimaSeparator == "dot") {
nf = NumberFormat.getInstance(Locale.US);
nf.setMinimumFractionDigits(8);
nf.setMaximumFractionDigits(8);
} else { // comma
nf = NumberFormat.getInstance(Locale.FRENCH);
nf.setMinimumFractionDigits(8);
nf.setMaximumFractionDigits(8);
}
}
catch (ClassCastException e) {
System.err.println(e);
}