用java BigDecimal 实现 =IF(C17="成熟期",IF(AB17<0.06%,0%,IF(AB17>=0.13%,2%,IF(AB17>=0.1%,(AB17-0.1%)*(0.4%/(0.13%-0.1%))+1.6%,AB17/0.1%*1.6%))),IF(AB17<0.06%,0%,IF(AB17>=0.1%,2%,IF(AB17>=0.08%,(AB17-0.08%)*(0.4%/(0.1%-0.08%))+1.6%,AB17/0.08%*1.6%))))
时间: 2023-07-14 21:12:35 浏览: 146
以下是用Java BigDecimal实现上述公式的代码:
```
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
String c17 = "成熟期";
BigDecimal ab17 = new BigDecimal("0.07");
BigDecimal result = BigDecimal.ZERO;
if ("成熟期".equals(c17)) {
if (ab17.compareTo(new BigDecimal("0.0006")) < 0) {
result = BigDecimal.ZERO;
} else if (ab17.compareTo(new BigDecimal("0.0013")) >= 0) {
result = new BigDecimal("2");
} else if (ab17.compareTo(new BigDecimal("0.001")) >= 0) {
BigDecimal temp = ab17.subtract(new BigDecimal("0.001"));
temp = temp.multiply(new BigDecimal("0.004")).divide(new BigDecimal("0.003"), 2, BigDecimal.ROUND_HALF_UP);
result = temp.add(new BigDecimal("1.6"));
} else {
result = ab17.divide(new BigDecimal("0.001"), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("1.6"));
}
} else {
if (ab17.compareTo(new BigDecimal("0.0006")) < 0) {
result = BigDecimal.ZERO;
} else if (ab17.compareTo(new BigDecimal("0.001")) >= 0) {
result = new BigDecimal("2");
} else if (ab17.compareTo(new BigDecimal("0.0008")) >= 0) {
BigDecimal temp = ab17.subtract(new BigDecimal("0.0008"));
temp = temp.multiply(new BigDecimal("0.004")).divide(new BigDecimal("0.0002"), 2, BigDecimal.ROUND_HALF_UP);
result = temp.add(new BigDecimal("1.6"));
} else {
result = ab17.divide(new BigDecimal("0.0008"), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("1.6"));
}
}
System.out.println(result);
}
}
```
其中,使用 `BigDecimal` 类型来避免精度问题。需要注意的是,在除法运算时,需要指定精度和舍入方式。此外,公式中的 `IF` 函数需要被 Java 中的 `if` 语句替代。
阅读全文