본문 바로가기
Android 개발/Java

[자바 (안드로이드)] float 계산 정확하게 하는 방법

by 독학하는 1인 개발자 2019. 10. 11.

Android 개발 Java

 

- float 정확하게 계산하는 방법

 

 

 

 

 

 

 

자바에서 float 계산은 정확하지 않은 값을 낸다.

 

 

특정 float 변수에 0.1 뭐 이런식으로 더하거나 빼면

 

정확히 0.1이 더해지거나 빼지는게 아니라

 

0.99999978 뭐 이런 값이 더해지거나 빼지기도 한다는 것이다.

 

그래서 연산 결과가 정확하게 나오지 않는다.

 

 

 

해결책은 BigDecimal을 쓰는 것이다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* float 변수 f_val1과 f_val2를 연산 */
 
float f_val = 0.1;
 
BigDecimal f_val_BD1 = new BigDecimal(String.valueOf(f_val)); // String 으로
BigDecimal f_val_BD2 = new BigDecimal("0.2"); // 넣어야 한다.
 
// 1. 덧셈
f_val_BD1 = f_val_BD1.add(f_val_BD2); // = f_val1 + 0.2
float result_add = f_val_BD1.floatValue(); // 더한 값 입력 = 정확히 0.3이 들어감
 
// 2. 뺄셈
f_val_BD2 = f_val_BD2.subtract(f_val_BD1); // = 0.2 - f_val1
float result_subtract = f_val_BD2.floatValue(); // 뺀 값 입력 = 정확히 0.1이 들어감
cs

 

출력을 해보면

값이 정확하게 들어가는 것을 볼 수 있다.

 

참 귀찮게도 만들어놨다.

 

 

 

 

댓글