실수의 연산은 오차가 따른다. 예를 들어 보자.
System.out.println(1.6+0.1);
1.6+0.1을 자바 이클립스에서 실행 할때 몇이 나올 것 같은가? 1.7? 아니다.
1.7000000000000002
정확한 1.7이 나오지 않고 소수점 뒤에 작은 오차가 발생한다. 컴퓨터는 실수를 표현할 때 부동소수점 방식을 사용하기 때문이다.
하지만 걱정하지마라 자바에는 이를 해결해줄 클래스가 존재한다. 바로 BigDecimal이라는 클래스이다.
이는 java.math패키지에 존재하기 때문에 import선언을 해줘야한다.
이제 BigDecimal 클래스를 사용해보자
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal e1 = new BigDecimal("1.6"); // 객체생성 후 데이터입력 시 ""를 사용하여 문자열의 형태로 입력
BigDecimal e2 = new BigDecimal("0.1");
System.out.println(e1.add(e2)); //덧셈
System.out.println(e1.subtract(e2)); //뺄셈
System.out.println(e1.multiply(e2)); //곱셈
System.out.println(e1.remainder(e2)); //나눗셈
}
}
1.7
1.5
0.16
0.0
반응형
'JAVA > API' 카테고리의 다른 글
| [자바] StringBuilder 사용하는 이유, 사용법, 함수(메소드) 정리 (4) | 2021.04.04 |
|---|---|
| [자바] String 클래스와 메소드 (0) | 2021.03.29 |
| [자바] 숫자를 문자로 바꾸는 메소드 toString() (0) | 2021.03.27 |
| [자바] Math.max(), Math.min() (0) | 2021.03.27 |
| [자바] Random() 클래스, Math.random() 메소드 (0) | 2021.03.26 |