
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