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