用java bigdecimal 实现 =IFERROR(((F2/E2*0.1+G2/E2*0.15+H2/E2*0.5-0.75)/9*100)*E2,0)
时间: 2023-10-01 08:03:42 浏览: 46
可以使用以下代码来实现这个公式:
```
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal f2 = new BigDecimal("100");
BigDecimal e2 = new BigDecimal("10");
BigDecimal g2 = new BigDecimal("150");
BigDecimal h2 = new BigDecimal("500");
BigDecimal result = BigDecimal.ZERO;
BigDecimal divisor = new BigDecimal("9").multiply(new BigDecimal("100"));
BigDecimal factor1 = f2.divide(e2, 10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("0.1"));
BigDecimal factor2 = g2.divide(e2, 10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("0.15"));
BigDecimal factor3 = h2.divide(e2, 10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("0.5"));
BigDecimal subtrahend = new BigDecimal("0.75");
BigDecimal dividend = factor1.add(factor2).add(factor3).subtract(subtrahend);
if (e2.compareTo(BigDecimal.ZERO) != 0) {
result = dividend.divide(divisor, 10, BigDecimal.ROUND_HALF_UP).multiply(e2);
}
System.out.println(result);
}
}
```
其中,`f2`、`e2`、`g2`、`h2` 分别代表公式中的 F2、E2、G2、H2,`BigDecimal` 的 `divide` 方法用于进行除法操作,第二个参数指定结果保留的小数位数,第三个参数指定四舍五入的方式。最后,如果 E2 不为 0,则计算最终结果并输出;否则输出 0。