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

C# BitConverter.DoubleToInt64Bits() 메서드 완벽 정리: double을 64비트 정수로 변환하는 방법

C#의 BitConverter.DoubleToInt64Bits() 메서드는 지정된 배정밀도(double) 부동 소수점 숫자를 64비트 부호 있는 정수(long)로 변환하는 데 사용됩니다.

구문

메서드의 기본 구문은 다음과 같습니다.

public static long DoubleToInt64Bits (double val);

여기서 매개변수 val은 변환하려는 double 형식의 숫자입니다.

동작 원리

이 메서드는 단순히 소수점 이하를 버리거나 반올림하는 것이 아니라, IEEE 754 표준에 따라 double 값이 메모리에 저장되는 내부 비트 패턴을 그대로 64비트 정수로 해석하여 반환합니다. 따라서 부동 소수점 데이터를 직렬화하거나, 비트 수준에서 값을 비교·분석해야 하는 경우에 유용하게 활용됩니다. 참고로 역변환이 필요할 때는 BitConverter.Int64BitsToDouble() 메서드를 사용하면 됩니다.

예제 1

다음은 BitConverter.DoubleToInt64Bits() 메서드를 구현한 첫 번째 예제입니다.

using System;
public class Demo {
   public static void Main(){
      double d = 5.646587687;
      Console.Write("Value = "+d);
      long res = BitConverter.DoubleToInt64Bits(d);
      Console.Write("\n64-bit signed integer = "+res);
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Value = 5.646587687
64-bit signed integer = 4618043510978159912

예제 2

이번에는 다른 double 값을 사용한 두 번째 예제입니다.

using System;
public class Demo {
   public static void Main(){
      double d = 0.001;
      Console.Write("Value = "+d);
      long res = BitConverter.DoubleToInt64Bits(d);
      Console.Write("\n64-bit signed integer = "+res);
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Value = 0.001
64-bit signed integer = 4562254508917369340

정리

BitConverter.DoubleToInt64Bits() 메서드는 double 값의 비트 표현을 그대로 long 타입으로 얻어내는 도구입니다. 산술적인 변환이 아닌 비트 수준의 변환이라는 점을 기억하면, 부동 소수점 값의 내부 구조를 분석하거나 네트워크 전송·파일 저장 등을 위해 데이터를 직렬화할 때 큰 도움이 됩니다.