Pessoal estou desenvolvendo um sistema de gestão financeira, e eu trabalho com números que na base são decimal(22,10),
o problema que quando faço calculos como esses,
BigDecimal decimal = new BigDecimal("1145754845424.0000000001");
BigDecimal decimal2 = new BigDecimal("1145754845424.000000002");
System.out.println(decimal.multiply(decimal2).setScale(10,BigDecimal.ROUND_HALF_EVEN).setScale(12,BigDecimal.ROUND_HALF_UP));
resultado = 1312754165812574133742182.085175390400
ocorre uma exception dizendo que estou tentando gravar um número maior que o campo…
Como que eu posso resolver isso… :roll: :roll: Tentei com o código acima mas não rolou.
e fora multiplicação tenho soma, substração e divisão. ![:cry: :cry:](https://www.guj.com.br/images/emoji/twitter/cry.png?v=9)
Não entendi direito sua dúvida. Ela está no resultado ou porque está dando erro na execução?
Executei seu código aqui e deu certo…
Sem a formatação, deu
1312754165812574133742182.0851753904000000002
Com seu código (escala de 10 depois de 12)
1312754165812574133742182.085175390400
Não entendi pq vc jogou na escala “10” e depois “12”. Assim, os dois últimos caracteres sempre serão zero, pelo que entendi.
Perdão se tiver sendo meio ignorante pois quase nunca mexi no BigDecimal.
[quote=marciosantri]Não entendi direito sua dúvida. Ela está no resultado ou porque está dando erro na execução?
Executei seu código aqui e deu certo…
Sem a formatação, deu
1312754165812574133742182.0851753904000000002
Com seu código (escala de 10 depois de 12)
1312754165812574133742182.085175390400
Não entendi pq vc jogou na escala “10” e depois “12”. Assim, os dois últimos caracteres sempre serão zero, pelo que entendi.
Perdão se tiver sendo meio ignorante pois quase nunca mexi no BigDecimal.[/quote]
O problema esta no resultado, pois eu só posso ter 12 antes e 10 depois da virgula… Eu consigo arredondar os que estão antes da virgula para 12 casas decimais e os que estão depois para 10 ?
Valeu
cara, que arredondamento é esse?
vc quer transformar um numero do tipo:
1312754165812574133742182.0851753904000000002
em
131275416581.0851753904
?
veja se é isso mesmo que vc quer…
fazendo uma comparação grosseira seria o equivalente em transformar um bilhão de reais em um real :shock: