Problemas com Casas decimais

3 respostas
Z

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.[telefone removido]");
		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:

3 Respostas

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.

Z

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.

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

rodrigo_gomes

cara, que arredondamento é esse?
vc quer transformar um numero do tipo:
1312754165812574133742182.0851753904000000002
em
131275416581.[telefone removido]
?

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:

Criado 23 de agosto de 2007
Ultima resposta 24 de ago. de 2007
Respostas 3
Participantes 3