Monetário

tem alguma funcao em q eu peguei um float ou double e ele fique com no maximo duas casas decimais depois da virgula?

oq kero eh mutiplicar dois numero float, e isso vai ser em Reais, so q fica as vezes um numero mt absurdo d grande ou ele noa arrendonda, do tipo, 0.99999999999

tem como corrigir isso?

float variavelFloat = 0.9999999999; DecimalFormat formato = new DecimalFormat(); formato.applyPattern("##0.00"); formato.format(variavelFloat);

t+

usa a classe DecimalFormat:
http://java.sun.com/j2se/1.4.2/docs/api/java/text/DecimalFormat.html

Uma duvida o format me retorna uma variavel ou muda a minha??
é pq eu só uso em métodos mas na hora de passar o valor pra outros métodos

[quote=Mark_Ameba]Uma duvida o format me retorna uma variavel ou muda a minha??
é pq eu só uso em métodos mas na hora de passar o valor pra outros métodos[/quote]

O format transforma objetos em strings e vice_versa. No caso, numeros em strings. Não tem sequer como se pensar que existe uma alteração. A resposta é: não. Ele gera um novo objeto.

vlw pela ajuda.

Se você quer trabalhar com precisão decimal, não use formatadores; use BigDecimal.

De modo geral:

  • Para moedas, procure usar BigDecimal. É um horror usar (requer um(a) ____* enorme), mas não dá esses resultados malucos, se você souber usar.

  • Se não puder usar BigDecimal, use double. Funciona bem quando você sabe BEM o que está fazendo. Por exemplo, comparar dois valores double é perigoso, principalmente quando você quer saber se ambos são iguais.

  • Só em casos extremos use float; a precisão é tão pequena que dá problemas quase todo o tempo (mesmo para calcular seu salário :stuck_out_tongue: ). Acho que você só deve usar float quando a biblioteca que você usa exige que você passe algum parâmetro ou array de floats (como é o caso do Java2D).

  • Ponha o seu palavrão preferido aqui, sinônimo de “paciência”.