[JAVA] ํ˜•๋ณ€ํ™˜(Type Conversion)

2021. 2. 5. 08:00ใ†๊ฐœ๋… ์ •๋ฆฌ ์ž‘์—…์‹ค/Java

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ํ˜• ๋ณ€ํ™˜(Type Conversion)

ํ˜• ๋ณ€ํ™˜(Type Conversion)์ด๋ž€ Data Type์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” int (์ •์ˆ˜) Type 200์˜ 32bit ๊ฐ’์ž…๋‹ˆ๋‹ค.

00000000  00000000  00000000  11001000

์ปดํ“จํ„ฐ๋Š” ์ด์ง„์ˆ˜์˜ ์„ธ๊ณ„ ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” 0๊ณผ 1๋„ ์•„๋‹ˆ๊ณ , On๊ณผ Off๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์ง€๋งŒ, ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ 2์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค๊ณ  ์ดํ•ด ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์ˆซ์ž๋ฅผ ๋ณด์‹œ๋ฉด 8๊ฐœ์”ฉ 4์ž๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฆฟ์ˆ˜๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ 4*8 = 32bit์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์œ„์— Data๋Š” int ํ˜•์œผ๋กœ ์ˆซ์ž 200์„ ์ €์žฅํ–ˆ์„ ๋•Œ, Memory ์ƒ์— ์ €์žฅ๋˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์‹ค์ˆ˜(Float) Type์œผ๋กœ ์ •์ˆ˜ 200.0์„ ์ €์žฅํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์šฐ๋ฆฌ ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ๋‘˜ ๋‹ค ๋˜‘๊ฐ™์€ ๊ฐ’์ด์ง€๋งŒ,

์ปดํ“จํ„ฐ์—๊ฒŒ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ˆ˜๊ฐ€ ๋˜์–ด ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

Float Type 200.0์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

01000011  01001000  00000000  00000000

    

 

๐Ÿ“ ์ž๋™ ํ˜• ๋ณ€ํ™˜

๋”๋ณด๊ธฐ

         ๐Ÿ‘‰ float์—์„œ double๋กœ ํ˜• ๋ณ€ํ™˜.

double a = 3.0f;
๋”๋ณด๊ธฐ

 

์œ„์˜ ์ฝ”๋“œ๋Š” Double Type์˜ ๋ณ€์ˆ˜ a์— Float Type์˜ ๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 3.0 ๋’ค์— f๊ฐ€ ๋ถ™์€ ๊ฒƒ์€ Float Type์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Double์€ 64bit์˜ ์‹ค์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” Data Type์ด๋ฉฐ, float๋Š” 32bit์˜ ์‹ค์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” Data Type์ž…๋‹ˆ๋‹ค.

์ž‘์€ ๊ทธ๋ฆ‡์— ๋‹ด๊ฒจ ์žˆ๋Š” ๊ฐ’์€ ํฐ ๊ทธ๋ฆ‡์— ์˜ฎ๊ฒจ ๋‹ด์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

       ๐Ÿ‘‰ double์—์„œ float๋กœ ํ˜• ๋ณ€ํ™˜.

float a = 3.0;
๋”๋ณด๊ธฐ

์œ„์˜ ์ฝ”๋“œ๋Š” Float Type์˜ ๋ณ€์ˆ˜ a์— Doule Type ๊ฐ’ 3.0์„ ๋„ฃ๊ฒ ๋‹ค๋Š” ์˜๋ฏธ ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์†Œ์ˆ˜์  ๋’ค์— f๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์€ Double Type์ด๋ผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

์œ„์—์„œ๋„ ์ด์•ผ๊ธฐ ํ–ˆ๋“ฏ์ด Float๋Š” Double๋ณด๋‹ค ์ž‘์€ ๊ทธ๋ฆ‡์ž…๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์ด ํ–ˆ์„ ๋•Œ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉฐ ์ง„ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

       ๐Ÿ‘‰ ํ˜• ๋ณ€ํ™˜ ๊ทœ์น™

์ถœ์ฒ˜: https://opentutorials.org/course/1223

 

์œ„์™€ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Byte Type์€ Short Type์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, Short Type์€ Byte Type์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, Long์€ Float์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, Float๋Š” Long์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ƒ์ˆ˜์™€ ์ƒ์ˆ˜๋ฅผ ์—ฐ์‚ฐํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

int a = 3;
float b = 1.0f;
double c = a + b;
๋”๋ณด๊ธฐ

์œ„์˜ ์—ฐ์‚ฐ์€ ๋‘ ๋ฒˆ์˜ ํ˜• ๋ณ€ํ™˜์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ €, a์™€ b๋ฅผ ๋”ํ•˜๊ธฐ ์œ„ํ•ด ์ •์ˆ˜ a์™€ ์‹ค์ˆ˜ b ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ˜• ๋ณ€ํ™˜์ด ๋˜์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ์—์„œ ๋งˆ์ง€๋ง‰ ์—ฐ์‚ฐ ํ–‰์„ ๋ณด๋ฉด int์™€ float๊ฐ€ ๋งŒ๋‚˜๊ฒŒ ๋˜๋Š”๋ฐ (a๋Š” int, b๋Š” float) int๊ฐ€ float๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์—(์‹ค์ˆ˜๋‹Œ๊นŒ ์ •์ˆ˜๋ณด๋‹ค ๋งŽ์€ ์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฆ‡.) ๋ณ€์ˆ˜ a์— ๋‹ด๊ฒจ ์žˆ๋Š” ๊ฐ’์€ float Type์œผ๋กœ ๋ณ€ํ™˜๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š” Float Type์ด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, ์ด ๊ฐ’๋“ค์ด ํ•ฉํ•ด์ ธ ๋‹ด๊ธธ ๊ทธ๋ฆ‡์ธ c์˜ ๋ณ€์ˆ˜ Type์€ doubleํ˜• ์ž…๋‹ˆ๋‹ค.

float๊ฐ€ double Type์˜ ๋ณ€์ˆ˜์— ๋‹ด๊ธฐ๊ธฐ ์œ„ํ•ด float๋Š” double๋กœ ํ˜• ๋ณ€ํ™˜์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

double์€ 64bit ์†Œ์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๊ณ , float๋Š” 32bit ์†Œ์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— double๋กœ ํ˜• ๋ณ€ํ™˜์ด ์ด๋ค„์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

 

 

 

๐Ÿ“ ๋ช…์‹œ์  ํ˜• ๋ณ€ํ™˜

๋”๋ณด๊ธฐ

         ๐Ÿ‘‰ ์ž๋™ ํ˜• ๋ณ€ํ™˜์ด ์ด๋ค„์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ

float a = 100.0;
int b = 100.f;
๋”๋ณด๊ธฐ

์ž๋™์œผ๋กœ ํ˜• ๋ณ€ํ™˜์ด ๋˜์ง€ ์•Š์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿด ๋• ์ˆ˜๋™์œผ๋กœ ํ˜• ๋ณ€ํ™˜์„ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ช…์‹œ์  (Explicit Conversion)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๊ฒฐ๊ณผ์ ์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด?! ์ž๋™ ํ˜• ๋ณ€ํ™˜์ด ์ด๋ค„์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

float a = (float)100.0;
int b = (int)100.0f;
๋”๋ณด๊ธฐ

์ž ๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ํ•œ๋ฒˆ ์ˆ˜์ • ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ž์— ๊ด„ํ˜ธ๋ฅผ ๋ถ™์ด๊ณ , ๋ณ€๊ฒฝํ•  Data Type์„ ๋ช…์‹œํ•˜๋ฉด ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋ช…์‹œ์  ํ˜• ๋ณ€ํ™˜์„ ํ•ด์ฃผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

 


์ฃผ๋‹ˆํ•˜๋ž‘์˜ ์ด๋ฒˆ ํฌ์ŠคํŒ…์ด ์–ด๋– ์…จ๋‚˜์š”? ๊ตฌ๋…, ๊ณต๊ฐ๊ณผ ๋Œ“๊ธ€์€ ์ฃผ๋‹ˆํ•˜๋ž‘์—๊ฒŒ ๋งค์šฐ ํฐ ํž˜์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

728x90
๋ฐ˜์‘ํ˜•