JavaScriptのDataView.getFloat64()関数の使い方を解説|サンプルコード付き
DataViewオブジェクトのgetFloat64()メソッドは、ArrayBuffer内の指定された位置から、符号付き64ビット浮動小数点数(IEEE 754 倍精度)を読み取り、その値を返します。
構文
書式は以下のとおりです。
dataView.getFloat64(byteOffset, littleEndian);
- byteOffset:読み取りを開始する位置をバイト単位で指定します(必須)。
- littleEndian:省略可能な論理値。
trueを指定するとリトルエンディアン形式で読み取り、falseまたは省略した場合はビッグエンディアン形式で読み取ります。
基本的な使用例
まずは、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オブジェクトが提供する定数や関数の戻り値も渡すことができます。
<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に何も書き込まれていない状態でデータを読み出そうとすると、このメソッドはNaNを返します。
<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()メソッドは、バイナリデータを扱う際に8バイト分の領域から倍精度浮動小数点数を取得するための便利な手段です。第2引数のエンディアン指定を活用すれば、異なるシステム間で生成されたバイナリデータにも柔軟に対応できます。
-
JavaScriptの関数パラメーターとは?使い方をサンプルコードで解説
JavaScriptでは、関数を呼び出すときにさまざまなパラメーター(引数)を渡すことができます。関数側では、渡されたパラメーターを受け取り、それに対して任意の処理を実行することが可能です。また、1つの関数は複数のパラメーターを受け取ることができ、それぞれのパラメーターはカンマ(,)で区切って指定します。さらに、JavaScriptには arguments オブジェクトが用意されており、仮引数として宣言した変数とは別に、実際に関数へ渡されたすべての引数へアクセスできます。以下のサンプルコードでは、Array.from(arguments) を使って受け取った引数を配列化し、順番に画面へ出力して
-
JavaScript DataView()とは?ArrayBufferのバイナリデータを読み書きする方法
JavaScript の DataView は、ArrayBuffer(バイナリデータ)に対して、さまざまな数値型の読み書きを行うための低レベルインターフェースを提供するオブジェクトです。DataView を使うことで、1バイト単位で細かく制御しながら、Int16、Int32、Float64 など複数の数値型として同じバッファにアクセスできます。なお、ArrayBuffer はそのままでは直接操作できないため、DataView や TypedArray を介してアクセスする必要があります。DataView の主なメソッドsetInt16(offset, value):指定したオフセット位置に