Problemas com o numero 9999999999999999,99

7 respostas
Mantu

Será que na verdade vc não está recebendo algo do tipo
9.999.999.999.999.999,999? Por que se for, acho que ele arredonda mesmo. Daí talvez seja o caso de vc usar alguma função para arredondar pra baixo

7 Respostas

Dieval_Guizelini

Será que você não está tendo problema com o Locale?

Locale locale = Locale.getDefault(); System.out.println("Este Sistema Operacional usa atualmente as seguintes Configuracoes (Default):"); System.out.println("Pais : " + locale.getDisplayCountry()); System.out.println("Lingua/Teclado : " + locale.getDisplayLanguage() + " - " + locale.getDisplayName()); System.out.println("");

Dieval_Guizelini

pode ser pelo construtor ou definir a escala com:

setScale

coloque uma casa a mais do que você precisa.

rodrigo_gomes

O que você está fazendo com esse valor do BigDecimal? vc está atribuindo a uma variavel do tipo double?
Ou vc está apenas mostrando?

com isso

BigDecimal bd = new BigDecimal("9999999999999999.99");
System.out.println(DecimalFormat.getCurrencyInstance(new Locale("pt_BR")).format(bd));
System.out.println(bd.doubleValue());

tenho os seguintes resultados:

¤ 9.999.999.999.999.999,99
1.0E16

[]´s
Rodrigo

T

Estou trabalhando com Java + Cobol e recebo o valor 9.999.999.999.999.999,99 e crio um BigDecimal porém este valor está sendo arredondado para 10.000.000.000.000.000,00.
Alguem teria uma solução para este problema?
Estou utilizando o DecimalFormat com o pattern #.###.###.###.###.###,00 e não funciona.

Exemplo de código:

BigDecimal a = new BigDecimal("9999999999999999.99");     
DecimalFormat format = new DecimalFormat("#,###,###,###,###,###.##");
System.out.println(format.format(a));

Vlws. e Aguardo retorno.

T

O locale que eu estou usando está normal… está Brasil mesmo…

e ele não está me retornando 3 casas decimais…

J

Tente usar isso

new BigDecimal(new BigInteger(s), casasDecimais);

T

Eu testei esse ultimo código … e ele continuou me retornou o valor arredondando o valor, ou seja, de 9999999999999999,99 está ficando 10000000000000000,00

alguma outra sugestão?

Criado 5 de dezembro de 2006
Ultima resposta 5 de dez. de 2006
Respostas 7
Participantes 5