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.