À L'Aide De Java Double.toString() de mise en forme de style avec plus de chiffres (DecimalFormat ne fonctionne pas avec une faible précision des nombres)

Le problème central est que j'ai une série de doubles que j'ai besoin de vous connecter, chacun avec nombre variable de chiffres significatifs. Les chiffres varient considérablement dans combien de chiffres significatifs qu'ils ont. Certains ont 0 (p. 5257), certains en ont 2 (par exemple 1308.75), certains ont tout le chemin jusqu'à 7 (par ex. 124.1171875). Fondamentalement, tout ce qui est entre 0 à 7 chiffres significatifs après la virgule.

Double Standard.toString() fonctionne super sur tout, MAIS ceux avec 7 chiffres significatifs. C'est tout le chemin jusqu'à 6 chiffres, les chiffres significatifs sont tous imprimés sans chiffres insignifiants. Mais sur ceux avec 7 chiffres significatifs, toString() arrondit le dernier chiffre. I. e.

5257 -> "5257"
1308.75 -> "1308.75"
124.1171875 -> "124.117188"

Bien sûr, j'ai essayé d'utiliser DecimalFormat("#.#######"), et qui a résolu le problème de manque de chiffres significatifs, mais il imprimé chiffres insignifiants pour beaucoup de la faible précision double. I. e.

1308.75 -> "1308.7499998"

C'est tout aussi inacceptable que 1) il gaspille une quantité importante d'espace (généralement log >2 GO de données par jour) et 2) il bousille les applications utilisant les journaux.

DecimalFormat semble sucer par rapport à toString() quand il s'agit de l'identification de chiffres significatifs, est-il de toute façon à résoudre ce problème? Je veux juste utiliser toString() de style de la manipulation de chiffres significatifs, et d'étendre le nombre maximum de chiffres de 6 à 7.

Des idées?
Grâce

Strictement parlant "5257" a 4 chiffres significatifs, je pense que vous vouliez dire "chiffres significatifs après la virgule".

OriginalL'auteur user79126 | 2011-07-29