android java:具有不同小数分隔符的格式号

时间:2014-03-18 18:28:34

标签: java android string-formatting

我目前正在使用以下方式编写数据:

 ....
 for (int i = 0; i < 3; i++) { 
    data = data + ";" + String.format("%.8f", values.toArray()[i]); 
 }  
 ...
 captureFile.println( data );

但我需要根据用户的偏好更改小数点分隔符,而不是Locale(应用程序是英文版,但日志分析器可以使用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)

2 个答案:

答案 0 :(得分:1)

不知道这是否是最佳方式,但它现在正在使用:

    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);
    }   

答案 1 :(得分:0)

试试这个..

DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(','); // Set as dot or comma
df.setDecimalFormatSymbols(dfs);