1

だから私はこのコードを持っています

    BigDecimal bd = new BigDecimal(i);
    bd = bd.round(new MathContext(6));
    double meters = bd.doubleValue();
    double km = bd.doubleValue()*0.001;
    double cm = bd.doubleValue()*100;
    double mm = bd.doubleValue()*1000;
    double miles = bd.doubleValue()*0.000621371192;
    double inches = bd.doubleValue()*39.3700787;
    double feet = bd.doubleValue()*3.2808399;
    double yards = bd.doubleValue()*1.0936133;
    double points = bd.doubleValue()*2834.64567;

だから私はここでそうするように言った例を見つけました

    BigDecimal bd = new BigDecimal(i);
    bd = bd.round(new MathContext(6));
    double meters = bd.doubleValue();

それが私が試したもので、メートルの数字を丸めますが、インチ、フィート、ヤードなどの数字は丸められません。私はこれを間違っていますか?これについてどうするのが正しい方法でしょうか?

編集:わかりましたので、使用する代わりに他の誰かが問題を抱えた場合に備えて機能するものを見つけました:

double points = bd.doubleValue()*2834.64567;

これは私がしました:

BigDecimal points = new BigDecimal(i*2834.64567);
points = points.round(new MathContext(6));
4

1 に答える 1

0

BigDecimal を使用できます。例えば:

double d = 15.3343243;
        BigDecimal bd = new BigDecimal(d);
        bd = bd.setScale(2, BigDecimal.ROUND_CEILING);
        bd = new BigDecimal(0.001 * bd.doubleValue());
        d = bd.doubleValue();
        System.out.println(d);

または BigDecimal オブジェクトなし:

        System.out.println((double)((int) (d * 1000)) / 1000);
于 2012-04-07T09:17:43.940 に答える