NaN ๊ณผ Infinity ๋ฐœ์ƒ ๊ฒฝ์šฐ

  • ๋‚˜๋ˆ—์…ˆ ๋˜๋Š” ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ ์‹œ ์ขŒ์ธก ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ •์ˆ˜์ด๊ณ  ์šฐ์ธก ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ 0์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ(ArithmeticException)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋ฌดํ•œ๋Œ€์˜ ๊ฐ’์„ ์ •์ˆ˜๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (ex int result = 5 / 0)
  • ์ขŒ์ธก ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์‹ค์ˆ˜ ์ด๊ฑฐ๋‚˜ ์šฐ์ธก ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ 0.0๋˜๋Š” 0,0f์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋Š” Infinity ๋˜๋Š” NaN(Not a Number)์ด ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ ์–ด๋–ค ์—ฐ์‚ฐ์„ ํ•˜๋”๋ผ๋„ ๊ฒฐ๊ณผ๋Š” ๊ณ„์† ๊ฐ™์€ ๊ฒƒ์ด๊ธฐ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—‰๋ง์ด ๋  ์ˆ˜์žˆ์œผ๋ฏ€๋กœ ๊ณ„์†ํ•ด์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. (ex Infinity + 2 → Infinity, NaN + 2 →  NaN)

 

๋ฏธ๋ฆฌ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • Double.isInfinite() ์™€ Double.inNaN() ์‚ฌ์šฉ
public class InfinityAndNaNCheckExample {
	public static void main(String[] args) {
		int x = 5;
		double y = 0.0;
		double z = x / y;
		//double z = x % y;
		
		//์ž˜๋ชป๋œ ์ฝ”๋“œ
		System.out.println(z + 2);	
		
		//์•Œ๋งž์€ ์ฝ”๋“œ
		if(Double.isInfinite(z) || Double.isNaN(z)) { 
			System.out.println("๊ฐ’ ์‚ฐ์ถœ ๋ถˆ๊ฐ€"); 
		} else { 
			System.out.println(z + 2); 
		}
	}
}

 

 

 

 

 

์ถœ์ฒ˜:์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค(๊ต์œก ํ˜„์žฅ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” JAVA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ๋ณธ์„œ)
https://search.shopping.naver.com/book/catalog/34238594620?cat_id=50010920&frm=PBOKMOD&query=%EC%9D%B4%EA%B2%83%EC%9D%B4%EC%9E%90%EB%B0%94%EB%8B%A4&NaPm=ct%3Dlocm18y8%7Cci%3D0e64b25f86693278b2d96906cbe4b981fe74c6d5%7Ctr%3Dboknx%7Csn%3D95694%7Chk%3D95e00da716b01b77d749d200eae34c788eb63950