Como formatar corretamente números flutuantes para String sem zero desnecessário decima
Um duplo de 64 bits pode representar um número inteiro +/- 2 53 exatament
Dado esse fato, escolhi usar um tipo duplo como um tipo único para todos os meus tipos, já que meu maior número inteiro é sem sinal de 32 bit
Mas agora eu tenho que imprimir esses pseudo números inteiros, mas o problema é que eles também são misturados com dobras reai
Então, como faço para imprimir essas dobras muito bem em Jav
Eu tenteiString.format("%f", value)
, que está próximo, exceto que recebo muitos zeros à direita para valores pequeno
Aqui está um exemplo de saída de%f
232.00000000 0.18000000000 1237875192.0 4.5800000000 0.00000000 1.23450000
O que eu quero é:
232 0.18 1237875192 4.58 0 1.2345
Certamente eu posso escrever uma função para aparar esses zeros, mas isso é muita perda de desempenho devido à manipulação de String. Posso fazer melhor com outro código de formato?
EDITA
As respostas de Tom E. e Jeremy S. são inaceitáveis, pois ambas arbitrariamente arredondam para duas casas decimais. Por favor, entenda o problema antes de responde
EDIT 2
Observe queString.format(format, args...)
é dependente da localidade (veja as respostas abaixo