0

私はこのプログラムを持っています:

BigDecimal a = new BigDecimal("0.21556788990002");
        System.out.println(a.setScale(2));

結果はあります0.21が、抽出したいときは0.2試してみてください

for(int i=1; i<10; i++) System.out.println(a.setScale(i));

i= 1 の場合、次のエラーが発生します。

java.math.BigDecimal.divideAndRound(BigDecimal.java:1439) で java.math.BigDecimal.setScale(BigDecimal.java:2390) で java.math.BigDecimal.setScale(BigDecimal.java:2437) で NewClass.main( NewClass.java:30)

i = 1 で抽出するにはどうすればよいですか?

4

4 に答える 4

6

スケールには丸めモードを使用する必要があります。あなたの場合、次のようになります。

System.out.println(a.setScale(1, RoundingMode.FLOOR));
于 2012-10-25T16:09:53.990 に答える
1

ところでこれは似ています

double a = 0.21556788990002;

for (int i = 1; i < 10; i++)
    System.out.printf("%." + i + "f%n", a);

版画

0.2
0.22
0.216
0.2156
0.21557
0.215568
0.2155679
0.21556789
0.215567890
于 2012-10-25T16:16:41.133 に答える
0

2 番目の引数として丸めを取るoverloaded setScale メソッドを使用する必要があります。ここを参照してください

    BigDecimal a = new BigDecimal("0.21556788990002");
    System.out.println(a.setScale(1,1)); //result 0.2
于 2012-10-25T16:11:33.693 に答える
0

小数形式も使用できると思います:

        BigDecimal a = new BigDecimal("0.21556788990002");

        //change any desired format using 0 or #
        DecimalFormat dFormat = new DecimalFormat("0.0");
        System.out.println(dFormat.format(a)); //< - print 0.2

        DecimalFormat dFormat = new DecimalFormat("#.0");
        System.out.println(dFormat.format(a)); //< - print .2

        DecimalFormat dFormat = new DecimalFormat("0.00");
        System.out.println(dFormat.format(a)); //< - print 0.21
于 2012-10-25T16:17:00.127 に答える