Как отформатировать двойной с точкой? - PullRequest
39 голосов
/ 03 марта 2011

Как мне отформатировать Double с String.format в строку с точкой между целой и десятичной частью?

String s = String.format("%.2f", price);

Вышеуказанные форматы только с запятой: ",".

Ответы [ 3 ]

95 голосов
/ 03 марта 2011

String.format(String, Object ...) использует язык по умолчанию вашей JVM. Вы можете использовать любую локаль, используя String.format(Locale, String, Object ...) или java.util.Formatter напрямую.

String s = String.format(Locale.US, "%.2f", price);

или

String s = new Formatter(Locale.US).format("%.2f", price);

или

// do this at application startup, e.g. in your main() method
Locale.setDefault(Locale.US);

// now you can use String.format(..) as you did before
String s = String.format("%.2f", price);

или

// set locale using system properties at JVM startup
java -Duser.language=en -Duser.region=US ...
1 голос
/ 16 марта 2018

Основываясь на этом сообщении , вы можете сделать это следующим образом, и это работает для меня на Android 7.0

import java.text.DecimalFormat
import java.text.DecimalFormatSymbols

DecimalFormat df = new DecimalFormat("#,##0.00");
df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ITALY));
System.out.println(df.format(yourNumber)); //will output 123.456,78

Таким образом, у вас есть точка и запятая на основе вашего Locale

Ответ отредактирован и исправлен благодаря комментарию Кевина ван Миерло

0 голосов
/ 03 марта 2011

Если он работает так же, как в PHP и C #, вам может потребоваться как-то установить свой язык. Об этом можно узнать в FAQ по интернационализации Java .

...