2
私はFloat.toString()
メソッドを使用すると数字の丸めを行う以下のコードに関する質問があります。それはなぜこれをするのですか?その背後にある特定の論理はありますか?Float.toString()が数値を変更するのはなぜですか?
Float.toString()
の内部コードも見てきました。それはFloatingDecimal(f).toJavaFormatString()
と呼んでいます。
public static void main(String[] args) {
Float f = Float.intBitsToFloat(1342177280);
String simpleString = new BigDecimal(f).toPlainString();
System.out.println("simpleString value " + simpleString);
String withToString = new BigDecimal(Float.toString(f)).toPlainString();
System.out.println("withToString value " + withToString);
}
出力はBigDecimalのコンストラクタは簡単です。この
simpleString value 8589934592
withToString value 8589934600 //here value changed
FloatをDoubleに変更します。私は、仮数部が浮動小数点数の精度よりも大きいということだけを推測することができます。 –
単にFloat.toStringがこれを返すからです:8.5899346E9ので、BigDecimalは残っているものだけを使うことができます – AxelH
これは、FloatのtoString実装で選択された精度のようですが、 –