A operação de divisão com BigDecimal é meio chata (para funcionar direito, você precisa especificar a escala e o modo de arredondamento); em vez de dividir por 100, é melhor você multiplicar um número por new BigDecimal (“0.01”). No seu caso, 5% = 0.05
E
entanglement
Outra coisinha - para comparar 2 BigDecimal, você deve usar compareTo, não converter para um double e usar “>” ou “<”. Isso “mata” todo o seu trabalho que você teve para ficar com os resultados corretos.
o primeiro codigo calcula os 1% normal(conforme postei la em cima)),mas para calcular somente 0.5% ta complicado
E
entanglement1 like
Você não está mostrando o número errado? 5% de 100 é o valor 5.
Tem um detalhe muito importante: ele É MUITO IMPORTANTE. Ele quebra as pernas de todo mundo que resolve usar BigDecimal e depois reclama que não funciona.
new BigDecimal (0.05) -> NUNCA FAÇA ISSO! 0.05 é um número “impreciso” em notação binária (que é a que o double do Java usa). Portanto, o número resultante será muito estranho.
new BigDecimal (“0.05”) (note que é uma string, não um double) -> Isso é o correto.
o valor q era em torno de 67,00 foi para 32.000 rsss
E
entanglement
importjava.text.*;importjava.math.*;importjava.util.*;classTesteBigDecimal4{publicstaticvoidmain(String[]args)throwsException{NumberFormatdf=NumberFormat.getCurrencyInstance();BigDecimalbd=newBigDecimal("62.0");BigDecimalpercent5=newBigDecimal("0.05");// Aqui imprime "3.100", ou seja, 3.1.System.out.println("5% de 62 = "+bd.multiply(percent5));// Aqui imprime "R$ 3,10" que é o que provavelmente você quer. System.out.println("5% de 62 = "+df.format(bd.multiply(percent5)));}}
tiagobernardo32
Bom dia,
Ao invés de 0.05 , o correto não seria 0.005 , já que ele quer 0.5 %(meio %) do valor e não 5%.