실수와 논리 자료형

2021. 8. 22. 20:28JAVA 기초(임시중단)

실수가 뭘까?

'아이고 내가 실수했네. 미안해.' 라고 하면 이것은 mistake가 될 것이다. 하지만 컴퓨터에서 실수는 'real number' 말 그대로 진짜 수 라는 의미이다.

 

Java에서 실수는 보통 다음과 같이 double자료형을 기본으로 사용한다.

그림 1. double 형

혹시 파이(먹는거아니다) 라는것을 아는가? π 라고 쓰고 3.14...어쩌고저쩌고....라는 원주율을 의미한다. 2019년 구글에서는 31.4조의 자리까지 계산을 해 내며 신기록을 세웠는데 이 숫자가 갑자기 왜 나올까?

 

java에서는 조금 특이한데 실수이지만 doble형식으로 내부에 저장이 되어 있다. 이 말이 어떤 의미냐면 다음의 그림을 보면 알 수 있다.

그림 2. float형으로 3.14를 지정할때 나타나는 오류

실수이지만 java 내부적으로 double형식으로 저장이 되며 float를 사용했을때는 실행이 되지 않는다.

 

 

그렇다면 이 오류를 어떻게 해결하는게 좋을까?

 

그림 3. float형 식별자

int형에서 long자료형을 사용할때랑 같은 형식으로 사용하면된다. 원하는 숫자 뒤에 f or F라는 식별자를 붙이면 된다.

이것은 내부적으로 각 자료형이 몇 bit를 받는지에 대한 개념을 이해하면 아주 좋다.

 

 

*부동소수점의 오류
단순계산보다 중복계산을 할 경우 나타날 확율이 높은 오류이다. ex) 1에 0.1을 10,000번 덧샘해라 ==> 1001.000000000159라는 값이 나온다. 한눈에 봐도 정답이 아님을 알 수 있다. 이런 중복계산을 많이 연산할 시 어느정도 오차가 발생하게된다. 

그 이유는 실수를 표연할때 많은 고민을 하는데 1.0이라고 할때 1과 0 을따로 표기할것인지 같이 표기할 것인지 고민하곤한다. 하지만 이 1과 0 사이에는 수많은 소숫점단위의 숫자가 있으며 이것을 표현하기 위해서는 인간의 기술로는 한정적이다. 그렇기에 정수와 표현하는 방법이 다르다. 부동 소수점 방식을 통해 표현하는데 프로그렘의 특징상 약간의 오차(0을 정확히 표현할 수 없는)가 발생할 수 있다.

논리 자료형
boolean이라고 선언한다.
true false라는 참 거짓을 표현한다.

 

그림4. 논리 자료형

위 명령문은 남자인가?(isMan?)라는 질문에 대한 답을 true라고 지정했다. 그렇다면 이 값은 참==진실이 된다.

'JAVA 기초(임시중단)' 카테고리의 다른 글

문자 자료형  (0) 2021.08.18
변수와 자료형 그리고 int  (0) 2021.08.17
hello java!  (0) 2021.08.17
자바 프로그래밍  (0) 2021.08.16