Tenho um campo que recebe valores do tipo Big Decimal
e preciso fazer uma comparação que por sinal parece bem simples mas ainda nao compreendi a sintaxe
a comparação é a Seguinte preciso verificar se o valor que vai vim no campo é maior ou igual a 99.999.999,99 , mas nao sei
como se faz com o tipo Big Decimal até pq ele nao Aceita os caracteres “>” “=”
BigDecimala=newBigDecimal(1);BigDecimalb=newBigDecimal(99999999.99);if(a.doubleValue()>=b.doubleValue()){System.out.println("a eh maior que b");}else{System.out.println("b eh maior que a");}
Axo que ainda nao ficou muito claro pois denislima vc converte o valor eu queria fazer a comparação entre tipos Big Decimal mesmo sem converter e pmlm sua comparação nao funciona aki ja tentei desse geito…
mas obrigado aguardo mais sugestoes …
denislima
ve isso te ajuda…
BigDecimala=newBigDecimal(1);BigDecimalb=newBigDecimal(99999999.99);if(a.compareTo(b)>=0){System.out.println("a eh maior que b");}else{System.out.println("b eh maior que a");}
nao sei mto bem como o compareTo() do BigDecimal trabalha, mas pelo que eu testei aqui ele satisfez corretamente a condição.
fallows
JM4X
é CompareTo mesmo velho… aí vc compara o resultado que é um int com >=< 0…
^^
pmlm
Às vezes tenho a sensação de que sou invisível… :?
JM4X
ahuahuas
Se foi pra mim nao foi a intenção.
Sorry.
Felagund
Você é invisivel
so pra constar, o compareTo tem 3 retornos possiveis, -1, 0 e 1
quando for -1 o numero é menor, 0 representa igualdade e 1 representa que é maior
detalhe muito importante, o BigDecimal tem uma precisa digamos “perfeita” ou seja, 123.120000000000001 é maior que 123.1200000000000 sempre verifique as escalas antes de comparar.
juliocesarsrosa1 like
"so pra constar, o compareTo tem 3 retornos possiveis, -1, 0 e 1
quando for -1 o numero é menor, 0 representa igualdade e 1 representa que é maior
"
Vlw era disso que eu precisava !!!
jMarcel
Ou seja, se vc quiser comparar precisão, terá que usar equals:
BigDecimala=newBigDecimal(99999999.9);BigDecimalb=newBigDecimal(99999999.99);if(a.equals(b)){System.out.println("iguais no critério de igualdade e escala");}else{System.out.println("diferentes em igualdade e/ou escala");}}
(Repare na casa decimal)...
E neste caso, o resultado seria: diferentes em igualdade e/ou escala.
pgioseffi
Seria legal também comentarem que é muito melhor usar
finalBigDecimalvalor=newBigDecimal("0.1");
do que
finalBigDecimalvalor=newBigDecimal(0.1);
A JVM, como todos sabem, trabalha com valores binários e, se enrola na hora de converter certos valores double para binários, pois os mesmos não teriam dízima periódica em binário.