как напечатать двойной без запятых - PullRequest
12 голосов
/ 11 февраля 2010

При использовании toString() Double добавляет запятые (5143 печатается как 5,143). Как отключить запятые?

Ответы [ 10 ]

14 голосов
/ 11 февраля 2010

Ваша проблема принадлежит локали, как правильно указал Рорик. Тем не менее, вам следует изучить класс DecimalFormat на случай, если изменение языкового стандарта означает испортить все.

Посмотрите на NumberFormat класс, чтобы иметь дело с разделителем тысяч. Потому что, похоже, ваш случай касается разделителя тысяч.

7 голосов
/ 08 октября 2015

Это удалит все группировки (в вашем случае запятые).

DecimalFormat df = new DecimalFormat();
df.setGroupingUsed(false);
6 голосов
/ 11 февраля 2010

Насколько я знаю, вы не можете отключить то, что возвращает метод toString().

Мое решение будет следующим:

someDouble.toString().replaceAll(",", "");

Не самое элегантное решение, но оно работает.

4 голосов
/ 11 февраля 2010

Java имеет отличную поддержку форматирования чисел в тексте в разных локалях с классом NumberFormat :

С текущей локалью:

NumberFormat.getNumberInstance().format(5000000);

получит вам (со шведским языком) строку: 5 000 000

... или с определенной локалью (например, французской, что также приводит к 5 000 000 ):

NumberFormat.getNumberInstance(Locale.FRANCE).format(5000000);
4 голосов
/ 11 февраля 2010
myDouble.toString().replaceAll(",", "");
3 голосов
/ 11 февраля 2010

Три способа:

  1. Использование DecimalFormat

    DecimalFormat df = new DecimalFormat();
    DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
    dfs.setGroupingSeparator(Character.MAX_VALUE);
    df.setDecimalFormatSymbols(dfs);
    System.out.println(df.format(doubleVar));
    
  2. (как предлагают другие) просто замените запятую в строке, которую вы получите

  3. Установка локали загрузки вашей виртуальной машины
3 голосов
/ 11 февраля 2010

Возможно, вам придется изменить настройки локали. По умолчанию он берется из языкового стандарта системы, но вы можете переопределить это. Прочитайте javadoc на Locale class и этот маленький учебник , чтобы начать. Локаль можно указать через командную строку:

java -Duser.language=en -Duser.region=US MyApplication
2 голосов
/ 14 июня 2017

Формат NumberFormat = NumberFormat.getInstance ();

format.setGroupingUsed (ложь);

1 голос
/ 07 августа 2014

Я использую этот метод для форматирования двойного в строку с фиксированной локалью, без группировки и с минимальное и максимальное количество дробных цифр

public String formatNumber(double number){
    NumberFormat nf = NumberFormat.getInstance(new Locale("en", "EN"));
    nf.setMaximumFractionDigits(3);  
    nf.setMinimumFractionDigits(1);
    nf.setGroupingUsed(false);
    String str = nf.format(number);
    return str;       
 }
0 голосов
/ 11 февраля 2010
Double result= 5143.0;

Sysout(result.toString()) 

дает мне 5143.0... можете ли вы поставить код, для которого у вас есть так

...