23

私はこのようなプログラムを持っています、

BigDecimal bd = new BigDecimal(23.086);
BigDecimal bd1= new BigDecimal(0.000);

bd = bd.setScale(2, RoundingMode.HALF_UP).stripTrailingZeros();
bd1 = bd1.setScale(2, RoundingMode.HALF_UP).stripTrailingZeros();

System.out.println("bd value::"+ bd);
System.out.println("bd1 value::"+ bd1);

次の23.09出力bdbd1bd1られ0ます0.00。メソッドを正しく適用していますか?

4

7 に答える 7

20

これを試して

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class calculator{
    public static void main(String[] args) {
        BigDecimal bd = new BigDecimal(23.086);
        BigDecimal bd1= new BigDecimal(0.000);    
        DecimalFormat df = new DecimalFormat("0.##");    
        System.out.println("bd value::"+ df.format(bd));
        System.out.println("bd1 value::"+ df.format(bd1));

    }

}
于 2013-09-10T14:38:31.360 に答える
14

シンプル、クリーン、柔軟、簡単に理解できる、コードを維持する

あまりにも働くでしょうdouble

DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2); //Sets the maximum number of digits after the decimal point
df.setMinimumFractionDigits(0); //Sets the minimum number of digits after the decimal point
df.setGroupingUsed(false); //If false thousands separator such ad 1,000 wont work so it will display 1000

String result = df.format(bd);
System.out.println(result);
于 2013-09-10T14:40:06.540 に答える
4

あなたはこれを行うことができます

System.out.println("bd value: " + ((bd.scale() == 0) ? bd.unscaledValue() : bd));
于 2013-09-10T14:39:17.690 に答える