IT 개발자_S

JAVA double 왜 뺄셈이 안될까? 해답은 BigDecimal 본문

IT/JAVA

JAVA double 왜 뺄셈이 안될까? 해답은 BigDecimal

Soso12 2020. 10. 26. 21:01
반응형

● Java Double 형에 대하여 이해한다

● 컴퓨터의 데이터 이해 및 해결방법 BigDecimal 이해 

 

오늘의 글에서는 데이터 자료형에 대한 중요성에 대하여 알아보는 시간을 가지겠습니다.

Java를 통한 프로그래밍 구현을 위해 필수적인 역량 중 하나는 적절한 데이터의 형 정의 및 구현 역량이다

데이터 형을 제대로 선언하지 않으면 계산로직을 만들다가 원하지 않는 결과값이 나와 금전 사고가 일어날 수 있기 때문이다.

다음과 같은 예를 들어보자.

입력값 102.5 입력이 되었고 이에 대한 퍼센트 값을 구해서 1을 빼는 프로그래밍을 한다고 가정하자

package project;

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        double d = (102.5 /100) -1;

        System.out.println(d);
        
        
        
    }

}

 

 해당 소스의 결과 값은 0.25가 아닌 0.24999999가 나온것을 알수 있다.

왜 0.25가 아닌 0.249999999 근사값이 나올까?

컴퓨터는 0과 1로 이루어진 존재이다

실수를 표현하는 것은 0과 1로 존재하는 컴퓨터는 어려움이 있다.

애초부터 실수형 데이터는 컴퓨터 입장에서는 0 과 1 사이의 근사값을 의미하는 숫자들이다. 

이에 double 형 선언도 실수값 즉 근사치 값으로 표현하기 때문에 위와 같은 문제가 발생한다.

그렇기 때문에 단순히 실수형이 있다고 double 형을 선언하게 되면 해당 문제가 발생하여 금전 사고가 발생할 수 있다.

이를 해결하기 위해서는 BigDecimal를 이용하면 해결 할 수 있다.

BigDecimal 의 사용 방법은 해당 글을 참조하면 도움이 될 것 같습니다.

12soso12.tistory.com/12

 

BigDecimal이란? (필요성)

BigDecimal의 정의 그리고 필요성. 처음 자바언어 공부를 시작하게되면 데이터 TYPE에 대하여 공부를 하게 됩니다. 정수형은 int를 사용하고 실수형은 float와 double 형으로 정의하여 사용하면 된다. 하

12soso12.tistory.com

 

반응형

'IT > JAVA' 카테고리의 다른 글

JAVA Length size의 차이  (0) 2022.02.07
소수점 곱할때 계산하는 방법 -String .format  (0) 2020.12.09
클래스 객체 인스턴스 왜 항상 헷갈릴까  (0) 2020.10.17
JAVA String형 Int 형 변환  (0) 2020.10.08
LinkedList - java  (0) 2020.02.11
Comments