이번 글은 저번에 제대로 다루지 못했던 실수형 자료형들을 보려고 한다.
먼저 자바에도 실수형 자료형은 C언어와 같이 float형과 double형이 있다.
다행스럽게도 두 자료형은 byte size 또한 같다.
float형은 4byte, double형은 8byte이다.
그리고 이 byte size를 유념해서 아래 내가 사용한 예제를 보자.
public class Ex02 {
public static void main(String[] args) {
float exchangeRate = 1136.50F;
double USDAmount = 600.50;
double KRWAmount = 682468.25;
System.out.println(exchangeRate);
System.out.println(USDAmount);
System.out.println(KRWAmount);
}
}
여기도 저번과 비슷한 느낌의 코드가 있다.
바로 exchangeRate라는 변수이다. 나는 왜 F를 붙였을까?
저번 예제와는 사뭇 다른 이유이다.
자바에서 실수형의 기본 자료형은 double로 컴파일러가 해석한다.
만약, 내가 저기서 F를 빼버렸다면 어떤 의미일까?
float = double
위와 같은 대입 연산이 되는 것이다.
사실 C언어에서는 어차피 같은 실수형이니 double형을 어거지로 float에 우겨넣어 줬었다.
하지만, 자바에서 이런 코드는 허용하지 않는다. 아까 실습 예제 코드 전에 써놨던 말을 여기서 되새기면 된다.
4byte인 변수에 8byte인 데이터를 우겨넣는다...??
단순히 생각해도 이상하다. 그래서 나는 1136.50이라는 숫자를 float형으로 대입하고 싶은 것을 알지만
컴퓨터는 double형으로 해석하기에 뒤에 F를 추가해 이 데이터는 float형이라고 명시한 것이다.
자, 이제 에러도 해결했으니 실행을 해보자.
숫자 세 개가 제대로 출력됐다~라고 생각할 수 있다.
그런데 C언어와 비교해서 생각해보자.
나는 exchangeRate는 1136.50이라고 썼고, USDAmount는 600.50이라고 썼고, KRWAmount는 682468.25라고 썼다.
그런데 내가 작성한 숫자 그대로 출력되지 않았다.
상식적으로 소수점 2째자리까지는 같이 나와야 정상아닌가??
사실, 자바는 소수점 맨 끝자리 0을 자동으로 삭제해준다.
그런데 또 이상한 점이 하나 더 있다.
C언어였다면 저 숫자들이 다 기본적으로 소수점 6자리까지 출력되었어야 했다.
하지만, 자바에서는 방금 위와 같은 이유로 유효 값이 있는 소수점 자리 수까지만 출력해준다.
'Language > Java' 카테고리의 다른 글
Java에서의 String 소개 - 1 (0) | 2022.02.09 |
---|---|
Java의 print와 scan (0) | 2022.02.03 |
짧은 객체지향 프로그래밍 소개 (0) | 2022.02.01 |
Java 참조 자료형과 출력 예제 (0) | 2022.01.29 |
Java 기본 자료형 - 1 (0) | 2022.01.27 |