Bem galera, na hora que eu executo, aí vou digitar um valor com “,” por exemplo: 9,75, da erro. Como eu corrigo este erro? Ah e outra pergunta como é que eu faço para mostrar apenas dois valores apos a virgula. Ah vale lembra que estou fazendo com o tipo de dados float. Peguei o text field da paleta do netbeans, e converti para float. VLW! Obrigado!
Bem, o Fórum está cheio das mesmas respostas. Eu mesmo já postei essa resposta. Aqui vai
http://www.guj.com.br/java/249701-android---decimalformat#1296603
da erro pq que não é virgula, e sim ponto. se vc quiser substituir use o replaceAll.
vc quer mostrar em que?
float a=(float) 15.0023;
txtNome.setText(String.format ("%.2f",a));//em JTextField
System.out.printf("%.2f",a);//console
Não, usar replaceAll é gambiarra pura. O correto é usar NumberFormat ou DecimalFormat, com os locales corretos.
Independente de onde for usar, vai de NumberFormat que tá tranquilo.
NumberFormat instance = DecimalFormat.getInstance(new Locale("pt", "BR"));
instance.setMaximumFractionDigits(2);
Double dValue;
try {
dValue = (Double) instance.parse("9,7000");
System.out.println(dValue);
NumberFormat nf = new DecimalFormat( "#.00" );
System.out.println(nf.format(dValue));
} catch (ParseException e) {
e.printStackTrace();
}
Não, usar replaceAll é gambiarra pura. O correto é usar NumberFormat ou DecimalFormat, com os locales corretos.
Independente de onde for usar, vai de NumberFormat que tá tranquilo.
[code]
NumberFormat instance = DecimalFormat.getInstance(new Locale(“pt”, “BR”));
instance.setMaximumFractionDigits(2);
Double dValue;
try {
dValue = (Double) instance.parse("9,7000");
System.out.println(dValue);
NumberFormat nf = new DecimalFormat( "#.00" );
System.out.println(nf.format(dValue));
} catch (ParseException e) {
e.printStackTrace();
}
[/code][/quote]
Cara, ta aqui a parte do código ao que me refiro.
double t1 = Float.parseFloat(Nota1.getText());
double t2 = Float.parseFloat(Nota2.getText());
double t3 = Float.parseFloat(Nota3.getText());
double t4 = Float.parseFloat(Nota4.getText());
double m = (t1+t2+t3+t4)/4;
Media.setText("" + m);
Está aí, são textfield, e foram criados a partir da paleta do netbeans.
E aí, como devo fazer para, mostrar apenas dois depois da virgula? E caso o usuário coloque uma virgula, não de erro?
VlW! Obrigado!
Não, usar replaceAll é gambiarra pura. O correto é usar NumberFormat ou DecimalFormat, com os locales corretos.
Independente de onde for usar, vai de NumberFormat que tá tranquilo.
[code]
NumberFormat instance = DecimalFormat.getInstance(new Locale(“pt”, “BR”));
instance.setMaximumFractionDigits(2);
Double dValue;
try {
dValue = (Double) instance.parse("9,7000");
System.out.println(dValue);
NumberFormat nf = new DecimalFormat( "#.00" );
System.out.println(nf.format(dValue));
} catch (ParseException e) {
e.printStackTrace();
}
[/code][/quote]
gambiarra… gambiarra pq, se eu posso fazer isso direto no textfield e passar o valor pronto para double?
sem falar do processamento com um comando, uma linha é possível fazer o que em 4.
Pq é gambiarra oras!!!
Se o cara inputar 1.279,00, com replaceAll vai funcionar? com DecimalFormat funciona sem alterar uma linha.
galera, por favor ajudem-me. Agradeço por terem colocado códigos, mas e aí, estes códigos eu devo colocar ou não? Como eu faço isso pelo netbeans(para utilizar no textfield “arrastado” da paleta)?
[quote=ruivo][quote=yhhik]
gambiarra… gambiarra pq, se eu posso fazer isso direto no textfield e passar o valor pronto para double?
sem falar do processamento com um comando, uma linha é possível fazer o que em 4.
[/quote]
Pq é gambiarra oras!!!
Se o cara inputar 1.279,00, com replaceAll vai funcionar? com DecimalFormat funciona sem alterar uma linha.[/quote]
kkkkkkkkkkkkkkk
gambiarra pq o professor disse né…
ta certo, se for pensar na exceção para esse caso DecimalFormat é a melhor o opção, mas replaceAll nao deve ser encarado como gambiarra, vai haver casos que ele será a melhor opção.
cara já foi postado duas maneiras diferentes de se resolver isso e de se mostrar 2 casas depois do ponto flutuante… escolha a que vc acha mais adequada e adapte as suas necessidades.
[quote=yhhik]
kkkkkkkkkkkkkkk
gambiarra pq o professor disse né…
ta certo, se for pensar na exceção para esse caso DecimalFormat é a melhor o opção, mas replaceAll nao deve ser encarado como gambiarra, vai haver casos que ele será a melhor opção.[/quote]
Não, gambiarra pq mais de 6 anos desenvolvendo em java profissionalmente (uns 8, se contar a academia) te dão certa experiência para dizer isso com alguma propriedade.
sim cara…só estou dizendo que vc está generalizando, como eu disse antes nesse caso se levar em conta a exceção
o DecimalFormat é a melhor opção, mas vai haver casos em que usar o replaceAll será a melhor opção.
Que fique claro que não quero tomar as dores de ninguem, mais quando o Replace all e a melhor opção em questoes aritméticas ?
não falo somente de questões aritméticas, o objetivo era trocar uma virgula por um ponto, eu disse que era melhor fazer isso direto na String que o textField retorna usando o replaceAll e entregar o valor correto em float.
mas acho que o colega Ruivo generalizou a dizer que replaceAll é uma gambiarra… não disse que o replace pode ser melhor em questões aritméticas.
[quote=yhhik]não falo somente de questões aritméticas, o objetivo era trocar uma virgula por um ponto, eu disse que era melhor fazer isso direto na String que o textField retorna usando o replaceAll e entregar o valor correto em float.
mas acho que o colega Ruivo generalizou a dizer que replaceAll é uma gambiarra… não disse que o replace pode ser melhor em questões aritméticas.
[/quote]
Tá, vamos esclarecer então. Ninguém está errado nessa história. Quando eu disse que usar replaceAll era gambiarra, era nesse contexto de, a partir de uma string, vc transformá-la em um number (double, integer, float, whatever…) Tanto é que a alternativa que sempre apontei foi usar o DecimalFormat.
Agora, se vc quer substituir algo da string e o resultado é outra string, oras, use replaceAll e seja feliz.
Entretanto, contudo, todavia, continuo afirmando que, usar replaceAll para transformar string em números, NESSE CASO, é sim gambiarra pura.