2017-02-23 5 views
0

私はJavaでこれを書きたいが、私はいくつかのエラーを取得し、私はそれを記述する方法を確認していない:のBigDecimal数学演算

C = A - (A*B)/100 

私のすべての値がのBigDecimalオブジェクトとして定義されています。

私はこのような何かをしようとしたが動作していない:

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

..I除算方式に複数の引数を追加するために警告が表示されます。私はそれを正しく書く方法を知らない。私は間違って何をしていますか?事前のおかげで

+1

関連[javadoc pages](https://docs.oracle.com/javase/8/docs/api/index.html?java/math/BigDecimal.html) – Paul

+1

「メソッド分割BigDecimal型のBigDecimalは、引数(int)には適用されません "。それ以上の議論を加えるべきではない。 –

+1

[bigdecimalの整数による除算]の可能な複製(http://stackoverflow.com/questions/7819553/division-of-bigdecimal-by-integer) –

答えて

2

BigDecimalにはdivide(int)方法はありませんが、100リテラルintあるので、それは、あなたが.divide(100)で行うには、それを求めているものです。 the documentationを参照する場合、divideのメソッドはすべてBigDecimalのインスタンスを受け入れます。

あなたはBigDecimal.valueOfを使用して、代わりにdivide(BigDecimal)を使用することができます。

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

(。それはlong [またはdouble]を受け入れますが、intlongに昇格させることができます)

代わりに、いくつかの値のため、代わりにStringコンストラクタを使用することがあります。

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

...特に、精度を失う可能性のある浮動小数点値を扱う場合は、doubleを使用してください。しかし、valueOfでは100が問題ありません。

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