개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.14 03:15

is_double 함수에 대한 질문

목록
  • 코드마스터 18시간 전 2025.07.14 03:15 새글
  • 5
    1
자바스크립트에서 is_double 함수를 사용하여 숫자가 더블인지 확인하려고 합니다. 그런데 이 함수가 정확히 어떻게 작동하는지 이해가 잘 안 가네요.

1. is_double 함수는 어떤 역할을 하는가요?
2. 이 함수는 어떤 조건을 기반으로 숫자가 더블인지 판단하나요?
3. 어떤 숫자가 더블인지 정확히 어떤 기준으로 판단하나요?

제가 이해한 바에 의하면, 더블은 일반적인 64비트 부동소수점 형식으로 표현된 숫자를 의미합니다. 하지만 이 함수가 정확히 어떻게 숫자를 더블인지 판단하는지에 대한 이해가 부족한 것 같습니다.

혹시 가능한 시간에 설명해 주실 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  18시간 전



    is_double 함수는 자바스크립트에서 숫자가 64비트 부동소수점 형식으로 표현되는지 확인하는 함수입니다.

    이 함수는 숫자가 IEEE 754 64비트 부동소수점 형식으로 표현되는지 확인합니다. IEEE 754 64비트 부동소수점 형식은 일반적으로 64비트 부동소수점 형식으로 알려져 있습니다.

    이 함수는 숫자의 부호, 가수, 지수, 그리고 오버플로우 여부를 확인하여 숫자가 64비트 부동소수점 형식으로 표현되는지 판단합니다.

    예를 들어, 다음 코드는 64비트 부동소수점 형식으로 표현되는 숫자인지 확인합니다.

    #hostingforum.kr
    javascript
    
    function isDouble(num) {
    
      // 64비트 부동소수점 형식의 부호 비트는 0x00000000 00000000 00000000 00000000
    
      // 부호 비트가 0이면 양수, 1이면 음수
    
      const signBit = (num >> 63) & 0x1;
    
      // 가수 비트는 0x00000000 00000000 00000000 00000000 ~ 0x7FFFFFFFFFFFFFFF
    
      // 지수 비트는 0x00000000 00000000 00000000 8000 ~ 0x7FFFFFFFFFFFFFFF
    
      const exponentBit = (num >> 52) & 0x7FF;
    
      // 오버플로우 여부를 확인
    
      if (exponentBit === 0x7FF) {
    
        // 오버플로우
    
        return false;
    
      }
    
      // 부호 비트가 1이면 음수, 0이면 양수
    
      const isNegative = signBit === 1;
    
      // 지수 비트가 0이면 0, 1이면 1
    
      const isZero = exponentBit === 0;
    
      // 부호 비트가 1이면 지수 비트가 0이면 0, 1이면 -0
    
      const isNegativeZero = isNegative && isZero;
    
      // 지수 비트가 0이면 0, 1이면 1
    
      const isInfinity = exponentBit === 0x7FF && !isNegativeZero;
    
      // 오버플로우 여부를 확인
    
      const isOverflow = exponentBit === 0x7FF;
    
      // 숫자가 64비트 부동소수점 형식으로 표현되는지 확인
    
      return !isInfinity && !isOverflow && !isNegativeZero;
    
    }
    
    
    
    console.log(isDouble(1.0)); // true
    
    console.log(isDouble(-1.0)); // true
    
    console.log(isDouble(0.0)); // true
    
    console.log(isDouble(-0.0)); // true
    
    console.log(isDouble(Infinity)); // false
    
    console.log(isDouble(-Infinity)); // false
    
    console.log(isDouble(NaN)); // false
    
    


    이 함수는 숫자가 64비트 부동소수점 형식으로 표현되는지 확인하는 데 사용됩니다.

    2025-07-14 03:16

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 35,901건 / 2 페이지

검색

게시물 검색