私はインターネットでたくさんの検索をしましたが、満足のいく解決策を得ることができませんでした。私がした最高のことは:
String b = new BigDecimal(floatNumber.stripTrailingZeros().toPlainString();
しかし、それはいくつかの厄介なバグを持っています、例えば、数が1.6の場合、私は1.600000744(または同様のもの)を取得します。
ありがとう
私はインターネットでたくさんの検索をしましたが、満足のいく解決策を得ることができませんでした。私がした最高のことは:
String b = new BigDecimal(floatNumber.stripTrailingZeros().toPlainString();
しかし、それはいくつかの厄介なバグを持っています、例えば、数が1.6の場合、私は1.600000744(または同様のもの)を取得します。
ありがとう
表示されているのは実際にはバグではなく、精度が制限された浮動小数点数を使用した結果です。1.6 を正確に表すことはできません。
印刷で特定のポイントを超える数字を切り捨てたい場合は、前述のように DecimalFormat を使用して行うことができます。
String result = new DecimalFormat("#.##").format(floatNumber).toString()
これにより、小数点以下 2 桁が出力されます。小数点以下を切り捨てるために必要な数の # を追加します。しかし、あなたが見ているのは、技術的には floatNumber の正しい値です。それほどの精度は必要ありません。
これを試して、
DecimalFormat twoDecForm = new DecimalFormat("#.##");
String b = twoDecForm.format(Double.parseDouble(Float.toString(floatNumber)));