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 |
출력을 해보면
값이 정확하게 들어가는 것을 볼 수 있다.
참 귀찮게도 만들어놨다.
'Android 개발 > Java' 카테고리의 다른 글
[자바 (안드로이드)] 각 변수 자료형 최대값과 최소값 정리 (int, float, long, double, char, short, byte) (0) | 2020.06.16 |
---|---|
MediaTracker Class (0) | 2011.08.04 |
이벤트 소스와 이벤트 클래스 결정 (0) | 2011.07.26 |
댓글