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이 반환된다는 점을 기억해 두면 디버깅에 큰 도움이 됩니다.