반응형
자바에서 소수점 계산 시
콘솔창 아래줄과 같이
값이 이상하게 나오는 경우가 있는데
IEEE 754 부동 소수점 방식으로 계산해서 저렇게 나오는 것이다
자세한 내용은 아래 글을 참조해주면 되고
프로그래밍 언어에서 0.1 + 0.2 = 0.3이 아닌 이유
Double 타입의 변수 a와 b에 0.1, 0.2를 넣고 더해봤더니 0.1 + 0.2인데 0.3이 나오는 것이 아니라 0.30000000000000004 가 나오는 것이 보인다 이게 뭐지? 버근가? 싶을텐데 컴퓨터는 모든 숫자를 0과 1로만(2진..
wakestand.tistory.com
실제 소수 계산시에는 정밀도를 보정해주는 BigDecimal을 사용해야 한다
BigDecimal은
BigDecimal 변수명 = new BigDecimal("값");
이런 식으로 선언 및 초기화를 하는데
값은 반드시 숫자가 아닌 문자 타입으로 넣어줘야 한다
숫자로 넣으면 값이 이상하게 나온다
BigDecimal을 이용한 사칙연산은 다음과 같다
더하기
BigDecimal명.add(BigDecimal타입 변수);
빼기
BigDecimal명.subtract(BigDecimal타입 변수);
곱하기
BigDecimal명.multiply(BigDecimal타입 변수);
나누기
BigDecimal명.divide(BigDecimal타입 변수);
예제에 사용한 코드는 아래와 같다
package algorith;
import java.math.BigDecimal;
public class PlusExample {
public static void main(String[] args) {
Double a = 0.1;
Double b = 0.2;
// BigDecimal에 숫자 넣을때에는 문자로 넣을 것
BigDecimal c = new BigDecimal(String.valueOf(a));
BigDecimal d = new BigDecimal(String.valueOf(b));
System.out.println("더하기 : " + c.add(d));
System.out.println("빼기 : " + c.subtract(d));
System.out.println("곱하기 : " + c.multiply(d));
System.out.println("나누기 : " + c.divide(d, 3));
}
}
반응형
'Error & Fix' 카테고리의 다른 글
MSSQL LOCK 확인 및 제거방법 (0) | 2020.03.19 |
---|---|
Mybatis CDATA 사용법 및 예제 (0) | 2020.03.10 |
스택 오버플로우 로그아웃 방법 (0) | 2020.02.05 |
내 컴퓨터 IP 바로 확인하는 방법 (0) | 2020.02.02 |
파이썬 Method '메소드명' may be 'static' 에러 해결하기 (0) | 2020.01.27 |
댓글