como imprimir um duplo sem vírgulas

Ao usar toString() , Double adiciona vírgulas (5143 é impresso como 5,143). Como desativar as vírgulas?

Seu problema pertence ao Locale, como foi apontado corretamente por Rorick. No entanto, você deve procurar na class DecimalFormat , caso a mudança de local signifique estragar todas as coisas.

Olhe para a class NumberFormat , para lidar com o separador de milhar. Porque parece que o seu caso é em relação ao separador de milhar em vez disso.

Tanto quanto eu sei, você não pode desativar o que o toString() retorna.

Minha solução seria a seguinte:

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

Não é a solução mais elegante, mas funciona.

Isso removerá todo o agrupamento (no seu caso, vírgulas).

 DecimalFormat df = new DecimalFormat(); df.setGroupingUsed(false); 
 myDouble.toString().replaceAll(",", ""); 

Java tem excelente suporte para formatar números em texto em diferentes localidades com a class NumberFormat :

Com a localidade atual:

 NumberFormat.getNumberInstance().format(5000000); 

vai te levar (com localidade sueca) a string: 5 000 000

… ou com um local específico (por exemplo, francês, que também resulta em 5 000 000 ):

 NumberFormat.getNumberInstance(Locale.FRANCE).format(5000000); 

Provavelmente, você precisa alterar suas configurações de localidade. Ele é obtido por padrão da localidade do sistema, mas você pode sobrescrever isso. Leia javadoc na class Locale e este pequeno tutorial para começar. Locale pode ser especificado através da linha de comando:

 java -Duser.language=en -Duser.region=US MyApplication 

Três caminhos:

  1. Usando o DecimalFormat

     DecimalFormat df = new DecimalFormat(); DecimalFormatSymbols dfs = df.getDecimalFormatSymbols(); dfs.setGroupingSeparator(Character.MAX_VALUE); df.setDecimalFormatSymbols(dfs); System.out.println(df.format(doubleVar)); 
  2. (como sugerido por outros) apenas substitua a vírgula na string que você obtém

  3. Defina a localidade na carga de sua VM

Formato NumberFormat = NumberFormat.getInstance ();

format.setGroupingUsed (false);

Eu uso esse método para formatar um double para string com um local fixo, sem agrupamento e com um mínimo e máximo de dígitos de fração

 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; } 
 Double result= 5143.0; Sysout(result.toString()) 

me dá 5143.0... vc pode colocar o código para o qual vc ficou

Intereting Posts