tb020  データの格納形式



数値データを記憶させる場合、いくつかのタイプ(storage type)が選択できます。その選択によって表現できる数値データの精度が変わってくると共に、メモリ占有量も変化することになります。
 

(1) 格納形式

generateコマンドのダイアログに見られるように、データの格納形式には複数の種類があります。

今、データの形式を数値データに限ることにすれば、選択肢は次のとおりです。

 byte  1バイト単位のデータ
 int  2バイトの整数データ
 long  4バイトの整数データ
 float  4バイトの単精度浮動小数データ
 double  8バイトの倍精度浮動小数データ

generateで変数を生成する場合にはfloatがデフォルトとなります。
 

(2) 注意事項

今、Data Editorを使って0.1, 0.2, 0.3という3つのデータを含む変数dataを作成してみます。

. list data

この変数data中に0.1というデータがいくつあるかをカウントしてみます。

. count if data == 0.1
  0

予想に反して0という結果が返ってきたわけですが、これには事情があります。0.1という数値は2進法で表現した場合、無限小数となるわけですが、データセット上には4バイトの浮動小数形式floatで記録されています。一方、data == 0.1という比較などの内部演算にはすべて8バイトの倍精度浮動小数形式doubleが用いられます。このため丸め誤差の影響により、0.1に合致するデータは存在しないという判断に至ってしまったわけです。

この問題はfloat()という関数を用いることによって解決を図ることができます。

. count if data == float(0.1)
  1


小技コーナー ページへ戻る

 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

© 2018 Math工房