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
中失去精度的浮点值。 100
对 valueOf
没问题。
我想在 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
中失去精度的浮点值。 100
对 valueOf
没问题。