Eu vi essa pergunta no Javaranch, mais eu não conseguir assimilar bem a resposta, tentei procura no forum mais o sistema de busca esta realmente estranho, além disso eu emprestei meu livro da kathy ~~, se alguém achar um link com essa explicação mais detalhada é so postar que eu fecho a pergunta, obrigado.
Fiz alguns testes aqui e notei que existe um arrendodamento na úlima casa .
Se você substituir
O compilador irá imprimir:
987,12345
Definindo o comportamento do método setMaximumFractionDigits:
Ele pega o último numero da parte fracionária se for maior que 4 arredonda para um numero maior,
no caso nós temos as últimas casas decimais o valor de 56 ele arredondará esse valor para 6 .
obs: claro isso pq você tinha 6 casas na parte fracionária e definiou que o máximo seria 5.
Ele tem esse comportamento pq a sua máquina está configurada para usar a ‘,’ como divisor de números decimais. Tanto é q se vc compilar o código com a String s = “987,123456”; vai aparecer como resultado “987.123456” com ‘.’.
O compilador lê números decimais com vírgula e os imprime com pontos.
O método parse recebe uma String e retorna um Number! Não o contrário…