7

重複の可能性:
Java Float.parseFloat での丸め

文字列を float に変換したいのですが、次のように言います。

System.out.println(Float.parseFloat("1553781.9829"));

出力:

1553782.0

私は言う:

System.out.println(Float.valueOf("1553781.9829"));

出力:

1553782.0

精度を落とさずに Float を取得するには?

4

4 に答える 4

5

あなたが正確さを求めているなら、私はBigDecimalをお勧めします

これは、すべての操作にメソッドを提供する通常のラッパー クラスと同じです。はい、引数も文字列として受け取ります。

  BigDecimal bd = new BigDecimal("1553781.9829");
  System.out.println(" bd :"+ bd);  //prints the same value

URL : http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html

于 2012-12-26T07:12:24.240 に答える
1

精度を失うリスクなしに float または double を使用することはできません。まず第一に、それらの精度は制限されています。float の場合は 10 進数で約 7 ~ 8 桁、double の場合は約 16 桁です。それとは別に、Java 浮動小数点型は内部的にバイナリであるため、精度を失うことなく一部の小数を格納することはできません。本当に正確な小数が必要な場合は、java.math.BigDecimal を使用してください。「Effective Java」の項目 48: 「正確な答えが必要な場合は float と double を避ける」を読んでください。

于 2012-12-26T07:16:07.293 に答える
0

代わりにFloat使用できますDouble

System.out.println(Double.valueOf("1553781.9829"));
System.out.println(Double.parseDouble("1553781.9829"));
于 2012-12-26T07:20:54.190 に答える