백엔드/나도코딩 자바

[나도코딩 자바 챕터1] 형변환하기(전반전) 정수형<->실수형

응개야 2023. 8. 13. 01:00

먼저!

정수형에서 실수형으로

실수형에서 정수형으로 형변환을 해보자.

// int to flat, double
int score = 93;
System.out.println(score); //93
System.out.println((float) score); //93.0
System.out.println((double) score); //93.0

score라는 변수에 정수형 값 93을 선언해줬다.

출력해본다면 93이 뜬다.

실수형으로 변환하고 싶다면

sout () 괄호 안에

(float) 실수형 예약어를 한번 더 넣고 출력해보자. 그럼 값은 93.0 즉 실수형 값으로 나온다.

double 실수형으로 변환도 똑같이 하면 된다. 

 

 

//flat,double to int
float score_f = 93.3F;
double score_d = 98.8;
System.out.println((int) score_f); //93
System.out.println((int) score_d); //98

실수형 float score_f 값에 93.3을 선언.

실수형 double score_d 값에 98.8을 선언.

정수형으로 형변환은

sout () 안에 int를 넣어주고 출력하면 형변환이 된다.

 

 

// 정수 + 실수 연산
score = 93 + (int) 98.8;
System.out.println(score);

정수+실수를 연산할때는

실수 값을 정수로 바꿔줘야한다.

앞에 (int) 값을 넣어주었다. 출력값은 // 191

 

 

score_d =  93 + 98.8; // 자동으로 double로 계산 됨 191
System.out.println(score_d); // 실수로 191.8

score_d는 앞앞 예제에 실수형으로 선언이 되었기땜에

93이라고 적어놨지만 자동으로 93.0 즉 double으로 설정

오류가 나지 않고

93+98.8 실수 + 실수 연산이 된다.         //191.8

 

 

 

// 변수에 형변환된 데이터 집어넣기
double convertedScoreDouble = score; // 191 -> 191.0
// int -> long -> float -> double (자동으로 형변환)

 score는 191로 정수변수이지만

double을 써서 형변환을 시키려고 한다.

그럼 무리없이 191에서 191.0로 실수가 된다.

왜냐하면 int -> long -> float -> double 순으로(범위가 넓은) 오름차순이라 무리가 없기때문이다.

 

 

int convertedScroeInt = (int)score_d; //191.8 -> 191
// double -> float -> long ->int는 수동으로 형변환

반대로 실수변수에서 정수변수로 형변환하려면 //191.8 -> 191

넓은 범위(실수)를  작은 범위(정수)로 다운그레이드 해야하기땜에

수동으로 형변환을 시켜줘야 한다.

앞에 (int)를 넣어 한번더 입력시켜주면 done.