Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript DataView.getFloat32() 함수 사용법과 예제 총정리

DataView 객체의 getFloat32() 메서드는 지정된 바이트 오프셋 위치에서 부호 있는 32비트 부동소수점 수(IEEE 754 단정밀도 형식)를 읽어 그 값을 반환합니다. 이진 데이터를 정밀하게 다루어야 하는 상황에서 유용하게 활용됩니다.

문법(Syntax)

기본 문법은 다음과 같습니다.

dataView.getFloat32(byteOffset, littleEndian);
  • byteOffset: 값을 읽기 시작할 버퍼 내의 바이트 위치(오프셋)입니다.
  • littleEndian (선택 사항): true이면 리틀 엔디안 방식으로 값을 읽고, false이거나 생략하면 빅 엔디안 방식으로 읽습니다.

예제 1: 기본 사용법

다음 예제는 ArrayBuffer를 생성하고, setFloat32()로 값을 저장한 뒤 getFloat32()로 다시 읽어오는 기본적인 흐름을 보여줍니다.

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var arrayBuffer = new ArrayBuffer(8);
      var dataView = new DataView(arrayBuffer);
      dataView.setFloat32(1, Math.LOG2E);
      document.write(dataView.getFloat32(1));
   </script>
</body>
</html>

출력 결과

1.4426950216293335

위 코드는 8바이트 크기의 ArrayBuffer를 만든 후, 오프셋 1 위치에 자연로그의 밑 e에 대한 로그값인 Math.LOG2E(약 1.4426...)를 32비트 부동소수점으로 저장하고, 이를 getFloat32()로 읽어 화면에 출력합니다.

예제 2: Math 상수 및 함수 결과값 저장하기

이 메서드에는 일반 숫자뿐만 아니라 Math 객체가 제공하는 수학 상수나 함수의 계산 결과도 값으로 전달할 수 있습니다. 아래 예제 역시 Math.LOG2E 상수를 저장하고 읽어오는 과정을 보여줍니다.

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var arrayBuffer = new ArrayBuffer(8);
      var dataView = new DataView(arrayBuffer);
      dataView.setFloat32(1, Math.LOG2E);
      document.write(dataView.getFloat32(1));
   </script>
</body>
</html>

출력 결과

1.4426950216293335

예제 3: 값이 저장되지 않은 경우의 동작

DataView에 유효한 값이 저장되지 않은 상태에서 데이터를 읽으려고 하면 이 메서드는 NaN(Not a Number)을 반환합니다. 아래 예제에서는 setFloat32() 호출 시 두 번째 인수(저장할 값)를 생략했기 때문에 undefined가 저장되며, 이를 읽으면 NaN이 출력됩니다.

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var arrayBuffer = new ArrayBuffer(8);
      var dataView = new DataView(arrayBuffer);
      dataView.setFloat32(1);
      document.write(dataView.getFloat32(1));
   </script>
</body>
</html>

출력 결과

NaN

정리

getFloat32()는 DataView에서 32비트 부동소수점 데이터를 안전하게 읽어오는 표준적인 방법입니다. byteOffset으로 읽을 위치를 지정하고, 필요에 따라 littleEndian 옵션으로 바이트 순서를 제어할 수 있으며, 값이 없는 위치를 읽으면 NaN이 반환된다는 점을 기억해 두면 디버깅에 큰 도움이 됩니다.