Android java: номера формата с разными десятичными разделителями

В настоящее время я пишу данные, используя:

....
 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 working fine when dot is true ( current app Locale US ..) but it giving all values to 0,000000000 when dot is false ( french)
2 ответа

не знаю, если это лучший способ сделать это, но теперь он работает, используя:

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


Попробуй это..

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

licensed under cc by-sa 3.0 with attribution.