中心的な問題は、ログに記録する必要がある一連の double があり、それぞれ有効桁数が異なることです。数字は、有効数字の桁数が大きく異なります。0 のもの (例: 5257)、いくつかのもの (例: 1308.75)、いくつかは 7 まで (例: 124.1171875) です。基本的に、小数点以下の有効桁数が 0 から 7 桁までのすべて。
標準の Double.toString() は、有効数字が 7 桁のもの以外はすべて優れています。これは最大 6 桁であり、有効桁数はすべて無意味桁数なしで出力されます。ただし、有効数字が 7 桁の場合、toString() は最後の桁を四捨五入します。いえ
5257 -> "5257"
1308.75 -> "1308.75"
124.1171875 -> "124.117188"
もちろん、DecimalFormat("#.#######") を使用してみました。これにより、有効桁数が欠落している問題は解決されましたが、精度の低い double の多くで無効桁が出力されました。いえ
1308.75 -> "1308.7499998"
これは、1) かなりの量のスペースを浪費し (通常、1 日に 2 GB を超えるデータをログに記録する)、2) ログを使用してアプリケーションを台無しにするため、容認できません。
有効数字の識別に関しては、DecimalFormat は toString() と比較してひどいようですが、とにかくそれを修正する方法はありますか? 有効桁数の toString() スタイル処理を使用し、最大桁数を 6 から 7 に拡張したいだけです。
何か案は?ありがとう