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
Problemas com o numero 9999999999999999,99
7 Respostas
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("");
pode ser pelo construtor ou definir a escala com:
setScale
coloque uma casa a mais do que você precisa.
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
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.
O locale que eu estou usando está normal… está Brasil mesmo…
e ele não está me retornando 3 casas decimais…
Tente usar isso
new BigDecimal(new BigInteger(s), casasDecimais);
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?