๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ/Java

[Java] ์‹ค์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” double, float, decimal์˜ ์ฐจ์ด์ 

by HanaV 2023. 7. 5.
728x90

decimal, float, ๊ทธ๋ฆฌ๊ณ  double์€ ์‹ค์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด์ง€๋งŒ, ๊ทธ๋“ค ๊ฐ„์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ๋‹ค.



์ •ํ™•์„ฑ

decimal์€ ์ •ํ™•ํ•œ ์‹ญ์ง„๋ฒ•(decimal system) ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธˆ์œต ๋ถ„์•ผ์™€ ๊ฐ™์ด ์ •ํ™•ํ•œ ์†Œ์ˆ˜ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•˜๋‹ค.
๋ฐ˜๋ฉด์— float์™€ double์€ ๋ถ€๋™ ์†Œ์ˆ˜์ (float-point) ํƒ€์ž…์œผ๋กœ, ๊ทผ์‚ฌ์น˜๋กœ ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

 

ํ‘œํ˜„ ๋ฒ”์œ„

decimal์€ ํฐ ์ˆซ์ž์™€ ์ž‘์€ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ์ •ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ ๋ฐ˜ํ•ด, float์™€ double์€ ์œ ํšจ ์ˆซ์ž ๋ฒ”์œ„์— ์ œํ•œ์ด ์žˆ๋‹ค. float๋Š” ๋Œ€๋žต 7์ž๋ฆฌ์˜ ์œ ํšจ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๋ฉฐ, double์€ ๋Œ€๋žต 15์ž๋ฆฌ์˜ ์œ ํšจ ์ˆซ์ž๋ฅผ ๊ฐ€์ง„๋‹ค.



๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

decimal์€ ์ •๋ฐ€ํ•œ ์†Œ์ˆ˜ ๊ณ„์‚ฐ์„ ์œ„ํ•ด ๋” ๋งŽ์€ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, float๋‚˜ double์— ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๋” ๋งŽ๋‹ค.



์„ฑ๋Šฅ

float์™€ double์€ ํ•˜๋“œ์›จ์–ด์—์„œ ํ•˜๋“œ์›จ์–ด ๋ถ€๋™ ์†Œ์ˆ˜์  ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋” ๋น ๋ฅธ ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. decimal์€ ์†Œํ”„ํŠธ์›จ์–ด์ ์ธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ float๋‚˜ double์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค.

float floatValue = 0.33333333333333333333f;
double doubleValue = 0.33333333333333333333;
BigDecimal bigDecimalValue = new BigDecimal("0.33333333333333333333");

System.out.println("float: " + floatValue);
System.out.println("double: " + doubleValue);
System.out.println("BigDecimal: " + bigDecimalValue);
float: 0.33333334
double: 0.3333333333333333
BigDecimal: 0.33333333333333333333

 

-float: float์€ 32๋น„ํŠธ ๋ถ€๋™ ์†Œ์ˆ˜์  ํƒ€์ž…์œผ๋กœ, ์†Œ์ˆ˜์  ์ดํ•˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ œํ•œํ•˜์—ฌ ๊ฐ’์„ ํ‘œํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•œ ๊ฐ’๊ณผ์˜ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
-double: double์€ 64๋น„ํŠธ ๋ถ€๋™ ์†Œ์ˆ˜์  ํƒ€์ž…์œผ๋กœ, float๋ณด๋‹ค ํฐ ๋ฒ”์œ„์™€ ๋” ๋†’์€ ์ •๋ฐ€๋„๋ฅผ ๊ฐ€์ง€์ง€๋งŒ ์—ฌ์ „ํžˆ ์ œํ•œ๋œ ์ •๋ฐ€๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๊ทผ์‚ฌ๊ฐ’์„ ํ‘œํ˜„ํ•  ์ˆ˜๋ฐ–์— ์—†๋‹ค.
-BigDecimal: BigDecimal์€ ์ •ํ™•ํ•œ ์‹ญ์ง„๋ฒ•(decimal) ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด๋กœ ๊ฐ’์„ ์ƒ์„ฑํ•˜์—ฌ ์ •ํ™•ํ•œ ์†Œ์ˆ˜ ๊ฐ’์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ, decimal์€ ์ •ํ™•ํ•œ ์†Œ์ˆ˜ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•œ ๊ธˆ์œต ๋ถ„์•ผ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•˜๋ฉฐ, float์™€ double์€ ์ผ๋ฐ˜์ ์ธ ๊ณผํ•™์  ๊ณ„์‚ฐ์ด๋‚˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ๊ฐ™์€ ๊ณณ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์„ ํƒ์€ ์‚ฌ์šฉํ•˜๋Š” ์ˆซ์ž์˜ ๋ฒ”์œ„, ์ •๋ฐ€๋„ ์š”๊ตฌ์‚ฌํ•ญ, ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ, ๊ทธ๋ฆฌ๊ณ  ์—ฐ์‚ฐ ์†๋„์™€ ๊ด€๋ จ๋œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

728x90

"); wcs_do();