청야에몽
청야의 개발 일기
청야에몽
전체 방문자
오늘
어제
  • 분류 전체보기 (156)
    • os (4)
      • Linux (4)
    • Language (32)
      • Python (15)
      • C# (6)
      • Java (11)
    • BaekJoon (92)
      • 단계별로 풀어보기 (81)
      • 누적합 (11)
    • Test (6)
      • 코딩테스트 (6)
      • 42 SEOUL (0)
    • Project (9)
      • 충돌, 피하기 게임 (8)
      • Unreal engine5 CICD 구축 (1)
    • Git & GitHUB (9)
    • Cloud (3)
      • AWS (0)
      • Azure (0)
      • Docker (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬
  • c#
  • 자료형
  • git
  • Rebase
  • 연산자
  • 누적합
  • Reset
  • 재귀 함수
  • Python
  • Linux
  • 누적 합
  • 리눅스
  • java
  • docker
  • for문
  • 백준
  • 중첩for문
  • Revert
  • pygame

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
청야에몽

청야의 개발 일기

Language/Java

[Java] NaN과 Infinity 처리

2022. 10. 14. 20:35
728x90

나눗셈(/) 또는 나머지(%) 연산에서 좌측 피연산자가 정수이고 우측 피연산자가 0일 경우 예외(ArithmeticException)가 발생한다. 무한대의 값을 정수로 표현할 수 없기 때문이다.

더보기

int x = 5;
int y = 0;
int result = 5 / 0; //예외 발생

하지만 좌측 피연산자가 실수이거나 우측 피연산자가 0.0 또는 0.0f이면 예외가 발생하지 않고 연산의 결과는 Infinity(무한대) 또는 NaN(Not a Number)이 된다.

더보기

5 / 0.0 → infinity

5 % 0.0 → NaN

Infinity 또는 NaN 상태에서 계속해서 연산을 수행하면 안된다. 어떤 연산을 하더라도 결과는 계속해서 Infinity와 NaN이 되므로 데이터가 엉망이 될 수 있기 때문이다.

더보기

Infinity + 2 → Infinity

NaN + 2 → NaN

그렇기 때문에 /와 % 연산의 결과가 Infinity 또는 NaN인지 먼저 확인하고 다음 연산을 수행하는 것이 좋다. 확인하기 위해서는 Double.inInfinite()와 Double.isNaN를 사용한다. 이렇게 하면 변수값이 Infinity 또는 NaN일 경우 true를, 그렇지 않다면 false를 산출한다.

더보기

boolean result = Double.isInfinite(변수);

boolean result = Douuble.isNaN(변수);

728x90
저작자표시 비영리 변경금지 (새창열림)

'Language > Java' 카테고리의 다른 글

[Java] 연산자(비교 연산자, 논리 연산자, 비트 논리 연산자)  (0) 2022.10.19
[Java] 정확한 계산 하는 방법  (0) 2022.10.09
[Java] 오버플로우와 언더플로우  (0) 2022.10.07
[Java] 부호/증감/산술 연산자  (0) 2022.10.06
[Java] 키보드 입력 데이터를 변수에 저장  (0) 2022.10.04
    'Language/Java' 카테고리의 다른 글
    • [Java] 연산자(비교 연산자, 논리 연산자, 비트 논리 연산자)
    • [Java] 정확한 계산 하는 방법
    • [Java] 오버플로우와 언더플로우
    • [Java] 부호/증감/산술 연산자
    청야에몽
    청야에몽
    개인적으로 학습을 하여 까먹지 않기 위해 올리는 블로그입니다.

    티스토리툴바