質問

私はBigDecimalタイプで表現いくつかの通貨値を持ついくつかの単純な合算をしたいです。

BigDecimal test = new BigDecimal(0);
System.out.println(test);
test.add(new BigDecimal(30));
System.out.println(test);
test.add(new BigDecimal(45));
System.out.println(test);

もちろん、私は後ろの出力を参照してください、うまくBigDecimal算術演算を理解していない。

Test
0
0
0

誰も私を助けることはできますか?

役に立ちましたか?

解決

BigDecimalは、あなたがこれを行うために必要なので、不変です

BigDecimal result = test.add(new BigDecimal(30));
System.out.println(result);

他のヒント

これは、Javaからドキュメントここのように見えます戻って新しいのBigDecimalを追加するます:

BigDecimal test = new BigDecimal(0);
System.out.println(test);
test = test.add(new BigDecimal(30));
System.out.println(test);
test = test.add(new BigDecimal(45));
System.out.println(test);
BigDecimal test = new BigDecimal(0);
System.out.println(test);
test = test.add(new BigDecimal(30));
System.out.println(test);
test = test.add(new BigDecimal(45));
System.out.println(test);

これは実際にはかなり簡単です。ただ、次の操作を行います。

BigDecimal test = new BigDecimal(0);
System.out.println(test);
test = test.add(new BigDecimal(30));
System.out.println(test);
test = test.add(new BigDecimal(45));
System.out.println(test);

も参照してください: BigDecimal#add(java.math.BigDecimal)

のBigIntegerは不変で、あなたがこれを行う必要があり、

  BigInteger sum = test.add(new BigInteger(30));  
  System.out.println(sum);
//you can do in this way...as BigDecimal is immutable so cant set values except in constructor

BigDecimal test = BigDecimal.ZERO;
BigDecimal result = test.add(new BigDecimal(30));
System.out.println(result);

result would be 30
BigDecimal no = new BigDecimal(10); //you can add like this also
no = no.add(new BigDecimal(10));
System.out.println(no);
<時間>

20

また、このようにそれを行うことができます:

BigDecimal A = new BigDecimal("10000000000");
BigDecimal B = new BigDecimal("20000000000");
BigDecimal C = new BigDecimal("30000000000");
BigDecimal resultSum = (A).add(B).add(C);
System.out.println("A+B+C= " + resultSum);

プリントます:

  

A + B + C =600億

BigDecimal demo = new BigDecimal(15);
それは内部的にfinal private final BigInteger intVal;としてご入力すなわち(15)を格納beacuse

これは不変です 文字列の作成時に、同じ概念の使用は、すべての入力は最終的にで保管します private final char value[];.So何implmentedバグはありません。

ちょうど別の例では、BigDecimalsを追加します。重要な点は、彼らは不変であり、彼らは唯一のコンストラクタで初期化することができるということです。ここでは、コードは次のとおりです。

import java.util.*;
import java.math.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc;
        boolean first_right_number = false;
        BigDecimal initBigDecimal = BigDecimal.ZERO;
        BigDecimal add1 = BigDecimal.ZERO;
        BigDecimal add2 = BigDecimal.ZERO;

        while (!first_right_number)
        {
            System.out.print("Enter a first single numeric value: ");
            sc = new Scanner(System.in);
            if (sc.hasNextBigDecimal()) 
            {
                first_right_number = true;
                add1 = sc.nextBigDecimal();
            }
        }

        boolean second_right_number = false;
        while (!second_right_number)
        {
            System.out.print("Enter a second single numeric value: ");
            sc = new Scanner(System.in);
            if (sc.hasNextBigDecimal()) 
            {
                second_right_number = true;
                add2 = sc.nextBigDecimal();
            }
        }
        BigDecimal result = initBigDecimal.add(add1).add(add2);
        System.out.println("Sum of the 2 numbers is: " + result.toString());
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top