java如何计算折扣
计算折扣的基本方法
在Java中计算折扣通常涉及原价和折扣率的数学运算。折扣率可以是百分比形式(如20%),需要转换为小数进行计算。
double originalPrice = 100.0;
double discountRate = 20.0; // 20%
double discountedPrice = originalPrice * (1 - discountRate / 100);
System.out.println("折后价格: " + discountedPrice);
处理多级折扣
对于多级折扣(如先打8折再打9折),可以通过连续乘法实现:

double price = 100.0;
double discount1 = 0.8; // 8折
double discount2 = 0.9; // 9折
double finalPrice = price * discount1 * discount2;
System.out.println("最终价格: " + finalPrice);
四舍五入处理金额
商业场景中通常需要对计算结果进行四舍五入:

import java.math.BigDecimal;
import java.math.RoundingMode;
double discountedPrice = 85.333333;
BigDecimal roundedPrice = BigDecimal.valueOf(discountedPrice)
.setScale(2, RoundingMode.HALF_UP);
System.out.println("四舍五入后: " + roundedPrice);
封装折扣计算方法
建议将折扣计算逻辑封装为独立方法提高代码复用性:
public static double calculateDiscount(double originalPrice, double discountPercentage) {
if (discountPercentage < 0 || discountPercentage > 100) {
throw new IllegalArgumentException("折扣率必须在0-100之间");
}
return originalPrice * (1 - discountPercentage / 100);
}
处理货币精度
对于精确的货币计算,推荐使用BigDecimal代替double:
import java.math.BigDecimal;
BigDecimal price = new BigDecimal("100.00");
BigDecimal discount = new BigDecimal("0.20"); // 20%折扣
BigDecimal discountedPrice = price.subtract(price.multiply(discount));
System.out.println("精确计算结果: " + discountedPrice);






