1

私はインターネットでたくさんの検索をしましたが、満足のいく解決策を得ることができませんでした。私がした最高のことは:

String b = new BigDecimal(floatNumber.stripTrailingZeros().toPlainString();

しかし、それはいくつかの厄介なバグを持っています、例えば、数が1.6の場合、私は1.600000744(または同様のもの)を取得します。

ありがとう

4

2 に答える 2

2

表示されているのは実際にはバグではなく、精度が制限された浮動小数点数を使用した結果です。1.6 を正確に表すことはできません。

印刷で特定のポイントを超える数字を切り捨てたい場合は、前述のように DecimalFormat を使用して行うことができます。

String result = new DecimalFormat("#.##").format(floatNumber).toString()

これにより、小数点以下 2 桁が出力されます。小数点以下を切り捨てるために必要な数の # を追加します。しかし、あなたが見ているのは、技術的には floatNumber の正しい値です。それほどの精度は必要ありません。

于 2012-04-16T22:16:48.427 に答える
1

これを試して、

DecimalFormat twoDecForm = new DecimalFormat("#.##");

String b = twoDecForm.format(Double.parseDouble(Float.toString(floatNumber)));
于 2012-04-16T21:31:04.517 に答える