0

Javaで6.23の値を6.25に増やしたい。今のところ、splitを使用して最後の2桁を取得し、それらをdoubleに変換するよりも、doubleをstringに変換することを計画しています。if()条件を使用するよりも。私のためにこれを行うことができるJavaの関数はありますか?または他の方法?

4

3 に答える 3

1
double value = 6.21;
value = value * 100;
value = Math.round((value + 2.5)/ 5.0) * 5.0;
value = value / 100;
System.out.println(value);
于 2012-12-04T09:35:47.670 に答える
1

精度/丸め誤差なしで通貨を操作したい場合は、 を使用できますBigDecimal。整数値に丸めるには、呼び出してパラメータを 0divide()に設定する必要があります...scale

BigDecimal precision = new BigDecimal("0.05")
BigDecimal value = new BigDecimal("6.23");
BigDecimal rounded = value.divide(precision, 0, BigDecimal.ROUND_UP).multiply(precision);
于 2012-12-04T09:34:51.783 に答える
1

0.05 (精度ステップ) で除算し、最も近い整数に丸め、再び 0.05 を掛けることができます。

BigDecimal precision = new BigDecimal("0.05");
BigDecimal value = new BigDecimal("6.23");
BigDecimal rounded = value.divide(precision, 0, RoundingMode.HALF_DOWN)
                          .multiply(precision);
System.out.println("rounded = " + rounded); //prints 6.25

その後、ユーティリティ メソッドでそれを抽出できます。

public class Test {

    private static final BigDecimal PRECISION = new BigDecimal("0.05");

    public static void main(String[] args) {
        BigDecimal value = new BigDecimal("6.23");
        System.out.println("value = " + value + " / rounded = " + roundCurrency(value));
        value = new BigDecimal("6.22");
        System.out.println("value = " + value + " / rounded = " + roundCurrency(value));
        value = new BigDecimal("6.20");
        System.out.println("value = " + value + " / rounded = " + roundCurrency(value));
        value = new BigDecimal("6.19");
        System.out.println("value = " + value + " / rounded = " + roundCurrency(value));
    }

    public static BigDecimal roundCurrency(BigDecimal value) {
        return value.divide(PRECISION, 0, RoundingMode.HALF_DOWN)
                    .multiply(PRECISION);
    }
}
于 2012-12-04T09:44:25.157 に答える