1. ホーム
  2. データベース
  3. アクセス

short int、long、float、double の使用問題の説明

2022-01-16 06:28:14
short int 短い整数 2バイト 値の範囲 -32768~32767
long long integer 4 bytes value range -2147483648~2147483647 float single precision 4 bytes value range -3.4*10(-38)~3.4*10(38)
倍精度倍精度8バイト値範囲 -1.7*10(-308) ~ 1.7*10(308)
AccessのデータをDBFにエクスポートする際に発生する問題です。DBFのフィールド幅は、Accessのフィールドが占めるバイト数ではなく、文字数です。DBFでは、整数や浮動小数点数は文字形式で保存されます。例えば、-3.134は"-3.135"として格納され、合計6文字を占めます。
そこで
Access の短い整数が、DBF ではフィールド幅 6 として格納される場合。
Accessの長整数の場合、DBFではフィールド幅11として格納されます。
Accessの単精度の場合、小数点以下7桁でDBFのフィールド幅18として格納されます。
Accessの倍精度の場合、DBFのフィールド幅24、小数点以下15桁として格納されます。
つまり、アクセスでの単精度、倍精度のデータは、DBFにダンプしても精度が保証されにくいのです。