BigDecimal 数学运算

BigDecimal math operations

我想在 Java 中写这个,但我遇到了一些错误,我不确定如何写:

C = A - (A*B)/100

我的所有值都定义为 Bigdecimal 对象。

我试过类似的方法但没有用:

C = A.subtract(A.multiply(B).divide(100));

..我收到一条警告,要求我向 divide 方法添加更多参数。我不知道如何正确地写它。我究竟做错了什么?提前致谢

c = a.subtract(a.multiply(b).divide(BigDecimal.valueOf(100.0)));

BigDecimal 没有 divide(int) 方法,但这就是你要求它用 .divide(100) 做的事情,因为 100 是一个 int 文字.如果您引用 the documentation,所有 divide 方法都接受 BigDecimal 个实例。

您可以使用 divide(BigDecimal) instead, by using BigDecimal.valueOf:

C = A.subtract(A.multiply(B).divide(BigDecimal.valueOf(100)));

(它接受一个long[或double],但是int可以提升为long。)

或者,对于某些值,您可以改用 String 构造函数:

C = A.subtract(A.multiply(B).divide(new BigDecimal("100")));

...特别是如果您正在处理可能会在 double 中失去精度的浮点值。 100valueOf 没问题。