Как вставить запятую в номер? - PullRequest
0 голосов
/ 29 сентября 2018

Я нашел такой пример использования String.format() в книге:

package stringFormat;

public class Main {
    public static void main(String[] args) {
        String test = String.format("%, d", 1000000000);
        System.out.println(test);
    } 
}

Согласно книге результат должен быть: 1,000,000,000.Но когда я запускаю код, я получаю только 1 000 000 000 без запятых.Зачем?как я могу получить его с запятыми?

output picture

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Вы можете прочитать о формате в Java по ссылке: https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

Для вашей проблемы вы можете исправить:

public static void main(String[] args) {

   String s = "1000000000";

   System.out.format("%,"+s.length()+"d%n", Long.parseLong(s));

}

Надеюсь на помощь!

0 голосов
/ 29 сентября 2018

Воспроизведите проблему с помощью Locale.FRANCE:

Locale.setDefault(Locale.FRANCE);

String test = String.format("%, d", 1000000000);
System.out.println(test); //  1 000 000 000

Этого можно избежать с помощью Locale.US:

String test = String.format(Locale.US, "%, d", 1000000000);

or

Locale.setDefault(Locale.US);
String test = String.format("%, d", 1000000000);
...