ai pessoal estou com um probleminha. tenho a Classe DecimalFormat ex
4.55588 porem na hora q eu formato o numero, fica assim 4,5 se eu quiser 1 casa śo. mas o problema é a virgula.
ele coloca a virgula e não o ponto. entenderam?
bom se alguem souber alguma forma dele formata com o ponto agradeço.
mas sem usar uma classe String para trocar a virgula pelo ponto como replace por exemplo.
como vc ta tentando usar o DecimalFormat?
tenta por assim:
DecimalFormatdf=newDecimalFormat("0.0");
M
marcossousaPJ
Você está usando a variável do tipo double? é o seguinte tem como você transformar ela para inteiro aí o caso da vígula desaparece, mas se caso a variável não possa transformar -se em inteiro aí é outro problema…
Caso ela possa ser transformada em inteiro faça o seguinte:
vou olhar para você como faz isto sem ter que transformar para inteiro ok? tenta algo da classe NumberFormat!!! :oops:
E
EjuniorPJ
“Felipe”:
como vc ta tentando usar o DecimalFormat?
tenta por assim:
DecimalFormat df = new DecimalFormat("0.0");
ola felipe ja usei dessa forma passando os parametros para o construtor, tbm usei usando o metodo setMaximumFractionDigits e outros metodos, mas nao funcionou ele troca a virgula pelo ponto. repare q ele vai fazer o double ficar assim ex 4,5 e nao 4.5. sacou!
E
EjuniorPJ
“marcossousa”:
Você está usando a variável do tipo double? é o seguinte tem como você transformar ela para inteiro aí o caso da vígula desaparece, mas se caso a variável não possa transformar -se em inteiro aí é outro problema…
Caso ela possa ser transformada em inteiro faça o seguinte:
vou olhar para você como faz isto sem ter que transformar para inteiro ok? tenta algo da classe NumberFormat!!! :oops:
mas não é para trasformar para inteiro, tem q arredonda, valeu :lol: com a quantidade de casas decimais.
alem do mais int nomeVariavel = Integer.parseInt(nomeDaSuaVariavel) se for um doble nao funciona ate mesmo um String. o int nao pode ter ponto na hora de trasformar.
mas valeu. :eek:
Como iniciante em java, cheguei a estas duas variações sobre o mesmo tema, que não usam DecimalFormat, e podem ser bem mais flexibilizadas, como receber tambem a qtde de casas decimais.
Notem que ainda estou desvendando a ‘mágica’ do casting, provavelmente
temos como fazer de um jeito mais elegante!
publicclassArredonda{publicstaticStringarredondaCom1CasaDecimal(doubled,StringpontoOuVirgula){Stringstr;str=(int)d+pontoOuVirgula+(int)(d%1*10+.5);returnstr;}publicstaticdoublearredondaCom1CasaDecimal(doubled){/* uma leve variação do metodo anterior */doubledd=.1*(int)(d%1*10+.5)+(int)d;returndd;}publicstaticvoidmain(Stringargs[]){doubled=4.55588;System.out.println(arredondaCom1CasaDecimal(d)+" => "+arredondaCom1CasaDecimal(d,","));}}
bob
E
EjuniorPJ
“Felipe”:
entaum tenta usar um replace…
DecimalFormat df = new DecimalFormat("0.0");
String str = df.format(numero).replace(',', '.');
valeu felipe mas com replace eu ja usei como disse la emcima no topico , queria de outras forma. mas veleu pela ajuda. :lol:
J
Java_newPJ
Oi eu fiz do jeito abaixo e deu certo só que eu estou com um prensentimento de “gato”, não sei até que ponto isso dá certo, eu tive este mesmo problema no Delphi pelo que eu pude notar ele coloca ‘,’ quando imprime um valor como string. Não sei se estou certa, mais até o ponto que eu sei toda entrada e saída e string, se alguem puder clarear melhor, gostaria de saber…
Abraços
Edjane
aí vai
import javax.swing.*;
import java.text.DecimalFormat;
public class Virgulas {
publicstaticvoidmain(Stringargs[]){doublen1=4.56665,n2=3.7777;doubleresult=n1*n2;// em vez de ponto defini como ','DecimalFormatteste=newDecimalFormat("0,00");// com ponto tive que multiplicar por 100 pois me dava o valor como se estivesse divididoJOptionPane.showMessageDialog(null,teste.format(result*100));DecimalFormatteste2=newDecimalFormat(" 0.00");JOptionPane.showMessageDialog(null," teste = "+teste2.format(result));}
}
J
Java_newPJ
Oi eu fiz do jeito abaixo e deu certo só que eu estou com um prensentimento de “gato”, não sei até que ponto isso dá certo, eu tive este mesmo problema no Delphi pelo que eu pude notar ele coloca ‘,’ quando imprime um valor como string. Não sei se estou certa, mais até o ponto que eu sei toda entrada e saída e string, se alguem puder clarear melhor, gostaria de saber…
Abraços
Edjane
aí vai
import javax.swing.*;
import java.text.DecimalFormat;
public class Virgulas {
publicstaticvoidmain(Stringargs[]){doublen1=4.56665,n2=3.7777;doubleresult=n1*n2;// em vez de ponto defini como ','DecimalFormatteste=newDecimalFormat("0,00");// com ponto tive que multiplicar por 100 pois me dava o valor como se estivesse divididoJOptionPane.showMessageDialog(null,teste.format(result*100));DecimalFormatteste2=newDecimalFormat(" 0.00");JOptionPane.showMessageDialog(null," teste = "+teste2.format(result));}
}
V
violinistaPJ
Eaê, pessoal !
eu tb estava com o mesmo problema, mas descobri como resolvê-lo ! :lol:
Vejam esse trecho de código:
DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
simbolos.setDecimalSeparator('.');
simbolos.setGroupingSeparator(',');
DecimalFormat fd = new DecimalFormat("0.00");
fd.setDecimalFormatSymbols(teste);
E é isso. Nas 3 primeiras linhas, foi instanciado o objeto símbolos, que armazena quais símbolos devem ser usados para separador decimal e de agrupamento (milhares). Depois, na última linha, foi definido no objeto "fd" que deveria ser usado os conjuntos de símbolos do objeto "simbolos" para as formatações.