用java bigdecial 实现 =IF(C17="成熟期",IF(L17<87.5%,0%,IF(L17>=89.5%,15%,IF(L17>=88.5%,(L17-88.5%)*(3%/(89.5%-88.5%))+12%,L17/88.5%*12%))),IF(L17<87%,0%,IF(L17>=88.5%,15%,IF(L17>=87.5%,(L17-87.5%)*(3%/(88.5%-87.5%))+12%,L17/87.5%*12%))))
时间: 2023-06-26 15:07:02 浏览: 201
以下是使用 Java BigDecimal 实现该公式的代码:
```java
import java.math.BigDecimal;
public class Formula {
public static void main(String[] args) {
BigDecimal c17 = new BigDecimal("成熟期");
BigDecimal l17 = new BigDecimal("0.875"); // 假设 L17 为 87.5%
BigDecimal result = BigDecimal.ZERO;
if (c17.equals(new BigDecimal("成熟期"))) {
if (l17.compareTo(new BigDecimal("0.875")) < 0) {
result = BigDecimal.ZERO;
} else if (l17.compareTo(new BigDecimal("0.895")) >= 0) {
result = new BigDecimal("15");
} else if (l17.compareTo(new BigDecimal("0.885")) >= 0) {
result = l17.subtract(new BigDecimal("0.885")).multiply(new BigDecimal("0.03")).divide(new BigDecimal("0.01"));
result = result.add(new BigDecimal("12"));
} else {
result = l17.divide(new BigDecimal("0.885"), 10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("12"));
}
} else {
if (l17.compareTo(new BigDecimal("0.87")) < 0) {
result = BigDecimal.ZERO;
} else if (l17.compareTo(new BigDecimal("0.885")) >= 0) {
result = new BigDecimal("15");
} else if (l17.compareTo(new BigDecimal("0.875")) >= 0) {
result = l17.subtract(new BigDecimal("0.875")).multiply(new BigDecimal("0.03")).divide(new BigDecimal("0.01"));
result = result.add(new BigDecimal("12"));
} else {
result = l17.divide(new BigDecimal("0.875"), 10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("12"));
}
}
System.out.println(result);
}
}
```
其中,BigDecimal 的 `compareTo` 方法用于比较两个数字的大小,`subtract` 方法用于计算两个数字的差,`multiply` 方法用于计算两个数字的乘积,`divide` 方法用于计算两个数字的商。在计算过程中,需要注意 BigDecimal 的精度和舍入规则。
阅读全文