써먹는 웹개발
[java] int를 안쓰고 BigDecimal을 쓰는 이유 본문
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
반응형
'웹개발 > Java & Jsp' 카테고리의 다른 글
[Java] '오류: 기본 클래스 Main.java을(를) 찾거나 로드할 수 없습니다.' 해결방법 (0) | 2024.01.02 |
---|---|
[Java] Runnable 인터페이스를 사용하는 이유 (1) | 2023.12.04 |
[Java] 리눅스 curl 명령어를 Java 소스로 변경 (0) | 2023.11.17 |
[Java] OTP용 6자리 인증키 생성 (0) | 2023.10.31 |
[Jsp] style 서버에 적용 안되는 현상 수정 (0) | 2023.10.27 |
Comments