🏃‍♀️ Do it !/TIL

실수형 타입 / 형변환

버터감자 2022. 9. 5. 09:35
728x90

2022 / 9 / 5 월

  • 실수형 타입
  • 형변환

✔️실수형 타입 ( float, double ) 

float & double

- 정수 타입과는 다른 저장 방식 떄문에 정수 타입보다 훨씬 큰 범위의 값 저장 가능.

- 부동 소수점 ( floating - point ) 방식으로 저장

실수값 저장. float(4) , double(8) 기본은 더블
3.14 / 3.14d / 3.14D 동일한 double 실수형 데이터 타입 표현 8byte크기
		
double var1 = 3.14D;
		
4byte의 기억장소에 3.14 8 byte크기의 데이터를 저장 (대입) 할 수가 없다. 
float var2 = 3.14; -> 에러
float var3 = 3.14F;
		
정밀도 테스트
        
double var4 = 0.1234579883297897932793;
float var5 = 0.1239491798643956983759F;
		
System.out.println("var1: " + var1);
System.out.println("var3: " + var3);
System.out.println("var4: " + var4);
System.out.println("var5: " + var5);
		
e사용하기
        
int var6 = 3000000;
double var7 = 3e6;
float var8 = 3e6F;
double var9 = 2e-3; // 2의 10-3승
		
System.out.println("var6: " + var6);
System.out.println("var7: " + var7);
System.out.println("var8: " + var8);
System.out.println("var9: " + var9);


✔️형변환

1) 자동형변환(promotion)

- 작은 데이터타입의 값을 큰 데이터타입의 변수로 저장시 형변환을 하지않고, 자동처리

숫자형 데이터타입 크기

정수형 데이터타입보다는 실수형 데이터타입이 더 큰 개념으로 정의되어 있다. 
byte < short ( char ) < int < long < float < double
작은 데이터타입의 값을 큰 데이터타입의 기억장소에 자동으로 형변환과정이 일어나 저장이 이루어진다. 

변수 = 값;

값이 좌측의 변수 타입에 맞게 형변환이 일치해야한다. (타입일치)

 

byte bytevalue = 10;
// int > byte
int intvalue  = bytevalue; // 자동형변환
System.out.println(intvalue);
		
char charvalue = '가';
intvalue = charvalue;
System.out.println("가의 유니코드 = " + intvalue);
		
intvalue = 500;
// intvalue 변수의 값을 읽어와서, 좌측의 변수 데이터타입 long형으로 변화되어, 값이 대입된다. 
long longvalue = intvalue;
System.out.println(longvalue);
		
intvalue = 200;
double doublevalue = intvalue;
System.out.println(doublevalue);

2) 명시적형변환(Casting)

- 큰 데이터타입의 값을 작은 데이터타입의 변수로 저장시 형변환작업을 명시적으로 해야한다
우측이 큰 데이터타입일경우는 자동형변환이 발생되지 않는다. 
= 기준으로 우측의 값이 좌측의 타입과 일치를 하고, 대입된다 ( 타입일치 )

 

int intValue = 44032;
		
// 정수값을 문자로 표현할 경우에는 char데이터 타입을 변환시켜야한다. 
char charValue = (char) intValue;
System.out.println(charValue);
		
long longvalue = 500;
intValue = (int) longvalue;
System.out.println(intValue);
		
double doubleValue = 3.64;
intValue = (int) doubleValue; // int형으로 변환되면서, 반올림없이 소수부분은 제거된다.
System.out.println(intValue);