C#에서 지정된 64비트 부호 있는 정수(long)를 배정밀도 부동 소수점 숫자(double)로 재해석하려면 BitConverter.Int64BitsToDouble() 메서드를 사용합니다.
이 메서드는 정수의 비트 패턴을 그대로 유지한 채 이를 double 값으로 해석합니다. 즉, 실제 수치 변환이 아니라 메모리상의 비트 표현을 다른 자료형의 관점에서 읽어들이는 방식입니다.
주요 특징
- 매개변수로 64비트 부호 있는 정수(
long)를 받습니다. - 반환값은 해당 비트 패턴을 해석한 배정밀도 부동 소수점 숫자(
double)입니다. - IEEE 754 배정밀도 부동 소수점 표준에 따라 비트가 해석됩니다.
예제 1
using System;
public class Demo {
public static void Main() {
long d = 9846587687;
Console.Write("Value (64-bit signed integer) = "+d);
double res = BitConverter.Int64BitsToDouble(d);
Console.Write("\nValue (double-precision floating point number) = "+res);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Value (64-bit signed integer) = 9846587687 Value (double-precision floating point number) = 4.86486070491012E-314
예제 2
다른 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main() {
long d = 20;
Console.Write("Value (64-bit signed integer) = "+d);
double res = BitConverter.Int64BitsToDouble(d);
Console.Write("\nValue (double-precision floating point number) = "+res);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Value (64-bit signed integer) = 20 Value (double-precision floating point number) = 9.88131291682493E-323
참고 사항
출력 결과에서 볼 수 있듯이, 작은 정수 값을 그대로 double 비트로 해석하면 지수부가 매우 작아 극히 작은 비정규화(subnormal) 숫자가 됩니다. 반대로 BitConverter.DoubleToInt64Bits() 메서드를 사용하면 double 값을 다시 64비트 정수로 되돌릴 수 있으므로, 두 메서드는 서로 역변환 관계에 있습니다.