๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“— Book/์ž๋ฐ”์˜ ์ •์„

3-4์žฅ ๋น„๊ต ์—ฐ์‚ฐ์ž

by hyeon-z 2023. 3. 14.

 

1. ๋Œ€์†Œ ๋น„๊ต ์—ฐ์‚ฐ์ž < > ≤ ≥

๐Ÿ’ก ๊ฐ’์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ต

๊ธฐ๋ณธํ˜• ์ค‘์—์„œ boolean์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ž๋ฃŒํ˜•์— ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์ฐธ์กฐํ˜•์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

2. ๋“ฑ๊ฐ€ ๋น„๊ต ์—ฐ์‚ฐ์ž == ≠

๐Ÿ’ก ๊ฐ’์ด ๊ฐ™์€ ์ง€ ๋˜๋Š” ๋‹ค๋ฅธ ์ง€๋ฅผ ๋น„๊ต

 

๊ธฐ๋ณธํ˜•, ์ฐธ์กฐํ˜• ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

- ๊ธฐ๋ณธํ˜•: ๋ณ€์ˆ˜์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’ ๋น„๊ต

- ์ฐธ์กฐํ˜•: ๋‘ ๊ฐœ์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€ ๋น„๊ต (์ฐธ์กฐํ˜•์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ)

 

System.out.println(10 == 10.0f);  // true

๋น„๊ต ์—ฐ์‚ฐ์ž๋„ ์ดํ•ญ ์—ฐ์‚ฐ์ž์ด๋ฏ€๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ํ˜•๋ณ€ํ™˜์„ ํ•œ๋‹ค.

10 == 10.0f
→ 10.0f == 10.0f
→ true

 

์‹ค์ˆ˜ํ˜• ์˜ค์ฐจ ํ™•์ธ

 

float f = 0.1f;
double d = 0.1;

System.out.printf(10.0 == 10.0f);  // true
System.out.printf(0.1 == 0.1f);    // false

System.out.printf("%19.17f%n", f);  // 0.10000000149011612
System.out.printf("%19.17f%n", d);  // 0.10000000000000000

์ผ๋‹จ ๋ช…์‹ฌํ•  ๊ฒƒ.

์ •์ˆ˜ํ˜•๊ณผ ๋‹ฌ๋ฆฌ ์‹ค์ˆ˜ํ˜•์€ ๊ทผ์‚ฌ๊ฐ’์œผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋จผ์ € ์‹ค์ˆ˜ํ˜•์€ m * 2^e์˜ ํ˜•ํƒœ๋‹ค.

10.0์€ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ, 0.1์€ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. (์ง์ ‘ 2์ง„์ˆ˜ ๊ตฌํ•ด๋ณด๋ฉด ๋ฌดํ•œ ์†Œ์ˆ˜๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.)

๋”ฐ๋ผ์„œ 0.1 == 0.1f ์ด๊ฒƒ์€ false๊ฐ€ ๋œ๋‹ค.

 

+) 

 0.500 ๊ณผ 0.50000 ์€ ๊ฐ™์ง€๋งŒ 0.333๊ณผ 0.33333 ์€ ๊ฐ™์„ ์ˆ˜ ์—†๋‹ค๋Š” ์˜ˆ์‹œ์ด๋‹ค.

 

๋ฌธ์ž์—ด์˜ ๋น„๊ต

 

๐Ÿ’ก ๋น„๊ต ์—ฐ์‚ฐ์ž == ๋Œ€์‹  equals()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

๋น„๊ต ์—ฐ์‚ฐ์ž: ๋‘ ๋ฌธ์ž์—ด์ด ์™„์ „ํžˆ ๊ฐ™์€ ์ง€๋ฅผ ๋น„๊ต

equals(): ๋‘ ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์ด ๊ฐ™์€ ์ง€๋ฅผ ๋น„๊ต

String str = new String("abc"); // String ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
String str = "abc"; // ์œ„์˜ ๋ฌธ์žฅ์„ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„

์›๋ž˜ String์€ ํด๋ž˜์Šค์ด๋ฏ€๋กœ, new๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜์ง€๋งŒ

ํŠน๋ณ„ํžˆ String๋งŒ new๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์œ„์™€ ๊ฐ™์ด ๊ฐ„๋‹จํžˆ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค.

 

String str1 = new String("abc");
String str2 = "abc"; 

System.out.println(str1.equals(str2));  // true
System.out.println(str1 == "abc");  // false
tem.out.println(str1.equalsIgnoreCase("ABC"));  // true

str1.equals(str2)์€ ๊ฐ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๋ฏ€๋กœ true๊ฐ€ ๋‚˜์˜จ๋‹ค.

ํ•˜์ง€๋งŒ str1๊ณผ “abc”๋Š” ๋‚ด์šฉ์€ ๊ฐ™์ง€๋งŒ ๋‹ค๋ฅธ ๊ฐ์ฒด์ด๋ฏ€๋กœ str1 == "abc" ์˜ ๊ฒฐ๊ณผ ๊ฐ’์€ false๊ฐ€ ๋‚˜์˜จ๋‹ค.

๋งŒ์ผ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ณ  ๋น„๊ตํ•˜๊ณ  ์‹ถ์œผ๋ฉด, equals()๋Œ€์‹  equalsIgnoreCase()๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

Reference

์ž๋ฐ”์˜ ์ •์„ - ๋‚จ๊ถ ์„ฑ

๋Œ“๊ธ€