用java BigDecimal 实现 =IF(AF13<$J$7,0,IF(AF13>$L$7,$N$7*100,$N$7*100*0.5+($N$7*100/($L$7-$J$7))*(AF13-$J$7)*0.5))*IF(AD13<10%,0.5,IF(AD13<20%,0.5+0.5/10%*(AD13-10%),IF(AD13>20%,1,0)))/100
时间: 2023-07-14 11:12:29 浏览: 86
以下是使用Java的BigDecimal类实现该公式的代码:
```
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal AF13 = new BigDecimal("10.5"); // 替换为实际的值
BigDecimal J7 = new BigDecimal("5"); // 替换为实际的值
BigDecimal L7 = new BigDecimal("15"); // 替换为实际的值
BigDecimal N7 = new BigDecimal("50"); // 替换为实际的值
BigDecimal AD13 = new BigDecimal("18"); // 替换为实际的值
BigDecimal result = BigDecimal.ZERO;
if (AF13.compareTo(J7) == -1) {
result = BigDecimal.ZERO;
} else if (AF13.compareTo(L7) == 1) {
result = N7.multiply(new BigDecimal("100"));
} else {
BigDecimal temp1 = N7.multiply(new BigDecimal("100")).multiply(new BigDecimal("0.5"));
BigDecimal temp2 = N7.multiply(new BigDecimal("100")).divide(L7.subtract(J7), 10, BigDecimal.ROUND_HALF_UP);
BigDecimal temp3 = AF13.subtract(J7);
result = temp1.add(temp2.multiply(temp3).multiply(new BigDecimal("0.5")));
}
if (AD13.compareTo(new BigDecimal("10")) == -1) {
result = result.multiply(new BigDecimal("0.5"));
} else if (AD13.compareTo(new BigDecimal("20")) == -1) {
BigDecimal temp1 = new BigDecimal("0.5");
BigDecimal temp2 = new BigDecimal("0.5").add(new BigDecimal("0.5").divide(new BigDecimal("10"), 10, BigDecimal.ROUND_HALF_UP).multiply(AD13.subtract(new BigDecimal("10"))));
result = result.multiply(temp2);
} else {
result = result.multiply(BigDecimal.ONE);
}
result = result.divide(new BigDecimal("100"), 10, BigDecimal.ROUND_HALF_UP);
System.out.println(result);
}
}
```
注意,使用BigDecimal计算时需要注意精度和舍入方式。在上面的代码中,除法运算时使用了ROUND_HALF_UP舍入方式,保留小数点后10位精度。在实际使用时,需要根据具体情况进行调整。
阅读全文