웹개발/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 = (float) 2.1;
float test_b = (float) 1.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을 사용
728x90
반응형