Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# BitConverter.Int64BitsToDouble() 메서드 완벽 가이드: 64비트 정수를 double로 변환하기

C#의 BitConverter.Int64BitsToDouble() 메서드는 지정된 64비트 부호 있는 정수(long)를 배정밀도 부동 소수점 숫자(double)로 재해석하는 데 사용됩니다. 이 메서드는 값 자체를 변환하는 것이 아니라, 정수의 비트 패턴을 그대로 double 형식의 비트 표현으로 읽어들이는 방식으로 동작합니다.

구문

다음은 이 메서드의 기본 구문입니다.

public static double Int64BitsToDouble (long val);

여기서 매개변수 val은 double로 재해석할 64비트 부호 있는 정수를 의미합니다.

예제 1

이제 BitConverter.Int64BitsToDouble() 메서드를 실제로 구현한 예제를 살펴보겠습니다.

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로 재해석하면 지수 표기법(E 표기)으로 매우 작은 값이 나타납니다. 이는 IEEE 754 배정밀도 부동 소수점 형식에서 지수 비트가 0에 가까울 경우 비정규화된(subnormal) 아주 작은 수로 해석되기 때문입니다. 반대로 BitConverter.DoubleToInt64Bits() 메서드를 사용하면 double 값을 다시 64비트 정수로 변환할 수 있으며, 두 메서드는 서로 역방향 연산을 수행합니다.