일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 빗썸 API 사용
- 오라클
- string format
- 파이썬 주식
- 즐겨찾기가 가장 많은 식당 정보 출력하기
- Web Server란
- WAS란
- Web Service Architecture
- 리눅스
- WAS WebServer 차이
- 파이썬
- 리눅스 rwx
- spring
- 트레이딩 봇 만들기
- pybithumb
- 파이썬 가상환경
- 변동성 돌파전략
- 단순 반복 자동화
- Python
- java
- JSON특징
- 와스 웹서버의 차이
- beautifulsoup
- 프로그래머스
- JavaScript Obejct Notation
- 프로그래머스 SQL
- 프로그래머스 소수
- BigDecimal
- 리눅스 777
- JSON 형식
- Today
- Total
IT 개발자_S
JAVA double 왜 뺄셈이 안될까? 해답은 BigDecimal 본문
● 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 의 사용 방법은 해당 글을 참조하면 도움이 될 것 같습니다.
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 |