문제
나는 다음과 같이 표현된 일부 통화 값으로 간단한 합계를 계산하고 싶습니다. 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);
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= 60000000000
BigDecimal demo = new BigDecimal(15);
내부적으로 입력을 저장하기 때문에 불변입니다. 즉 (15)를 다음과 같이 저장합니다. final private final BigInteger intVal;
문자열 생성 시 동일한 개념을 사용하여 모든 입력이 최종적으로 저장됩니다.private final char value[];
.그래서 구현된 버그가 없습니다.
추가할 또 다른 예 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());
}
}
제휴하지 않습니다 StackOverflow