DataView 객체의 getFloat64() 메서드는 ArrayBuffer에서 지정된 바이트 오프셋 위치에 저장된 부호 있는 64비트 부동소수점 수(배정밀도 실수)를 읽어 그 값을 반환합니다. 이진 데이터를 정밀하게 다루어야 할 때 유용하게 사용됩니다.
문법(Syntax)
getFloat64() 메서드의 기본 문법은 다음과 같습니다.
dataView.getFloat64(byteOffset, littleEndian);
매개변수 설명
byteOffset: 데이터를 읽기 시작할 버퍼 내의 바이트 위치로, 필수로 지정해야 합니다.
littleEndian(선택): 값을 리틀 엔디안(little-endian) 방식으로 읽을지 여부를 결정하는 불리언 값입니다. 생략하거나 false를 지정하면 빅 엔디안(big-endian) 방식으로 처리됩니다.
기본 사용 예제
다음 예제는 setFloat64()로 값을 저장한 뒤, 같은 위치에서 getFloat64()로 값을 읽어오는 과정을 보여줍니다.
<html> <head> <title>JavaScript Example</title> </head> <body> <script type="text/javascript"> var arrayBuffer = new ArrayBuffer(20); var dataView = new DataView(arrayBuffer); dataView.setFloat64(1, 654.44); document.write(dataView.getFloat64(1)); </script> </body> </html>
실행 결과
654.44
Math 상수를 활용한 예제
이 메서드에는 일반 숫자뿐만 아니라 Math 객체가 제공하는 상수나 함수의 결과값도 전달할 수 있습니다. 아래 예제는 자연로그의 밑(e)의 밑이 2인 로그값인 Math.LOG2E를 저장하고 다시 읽어옵니다.
<html> <head> <title>JavaScript Example</title> </head> <body> <script type="text/javascript"> var arrayBuffer = new ArrayBuffer(20); var dataView = new DataView(arrayBuffer); dataView.setFloat64(1, Math.LOG2E); document.write(dataView.getFloat64(1)); </script> </body> </html>
실행 결과
1.4426950408889634
저장된 값이 없을 경우의 동작
DataView에 아무런 값도 저장하지 않은 상태에서 getFloat64()를 호출하면 에러가 발생하는 것이 아니라 NaN(Not a Number)이 반환됩니다. 이는 해당 메모리 위치가 초기화되지 않았음을 의미하므로, 값을 읽기 전에 반드시 setFloat64() 등으로 초기화했는지 확인하는 것이 좋습니다.
<html> <head> <title>JavaScript Example</title> </head> <body> <script type="text/javascript"> var arrayBuffer = new ArrayBuffer(20); var dataView = new DataView(arrayBuffer); dataView.setFloat64(1); document.write(dataView.getFloat64(1)); </script> </body> </html>
실행 결과
NaN
정리
getFloat64()는 ArrayBuffer 내부의 이진 데이터를 배정밀도 실수로 손쉽게 읽어올 수 있게 해주는 메서드입니다. 바이트 오프셋과 엔디안 옵션을 적절히 활용하면 네트워크 프로토콜 처리나 파일 파싱처럼 정밀한 이진 데이터 조작이 필요한 작업에서 안정적으로 사용할 수 있습니다.