써먹는 웹개발

[java] int를 안쓰고 BigDecimal을 쓰는 이유 본문

웹개발/Java & Jsp

[java] int를 안쓰고 BigDecimal을 쓰는 이유

kmhan 2023. 12. 6. 12:21


728x90
반응형

java에서는 소수점 연산시 부정확한 데이터가 나오는 경우를 대비해 정확한 실수 계산을 위해 BigDecimal를 지원합니다

퍼포먼스 측면에서는 double, float보다는 떨어지지만 시스템에 따라 정확한 소수점 연산이 필요한 경우 BigDecimal를 

사용해야합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Main {
    public static void main(String[] args) {
        System.out.println("--float--");
        float test_a = (float2.1;
        float test_b = (float1.1;
    
        for (int i=0; i<5; i++) {
            test_a+=test_b;
            System.out.println(test_a);
        }
        System.out.println("--BigDecimal int--");
 
        BigDecimal big_a = new BigDecimal(2.1);
        BigDecimal big_b = new BigDecimal(0.1);
 
        for (int i=0; i<5; i++) {
            big_a = big_a.add(big_b);
            System.out.println(big_a);
        }
        System.out.println("--BigDecimal Str--");
        BigDecimal big_d = new BigDecimal("2.1");
        BigDecimal big_e = new BigDecimal("0.1");
        for (int i=0; i<5; i++) {
            big_d = big_d.add(big_e);
            System.out.println(big_d);
        }
    }
}
cs

 

결과

--float--

3.19...

4.29...

5.39...

6.49...

7.59...

-- BigDecimal int--

2.20...625

2.30...250

2.40...875

2.50...500

2.60...125

--BigDecimal Str--

2.2

2.3

2.4

2.5

2.6

 

결론 : 정확한 소수점 계산은 String 형태의 BigDecimal을 사용

 

출처 : https://blog-han.tistory.com/42

728x90
반응형


Comments