Page 446 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼クエリーの集計について AC初心者 03/11/28(金) 10:24 ┗Re:クエリーの集計について しろくろやぎ 03/11/28(金) 13:24 ─────────────────────────────────────── ■題名 : クエリーの集計について ■名前 : AC初心者 ■日付 : 03/11/28(金) 10:24 -------------------------------------------------------------------------
Aテーブルに「結果」という数値型(倍精度浮動小数点型)のフィールドがあります。 「結果」にはユーザーがフォームにて入力した数字の値が入ります。 その値をクエリーにて別のフィールドでグループ化し、「結果」フィールドの合計をとると小数点が限りなく入っているデータになってしまいます。 「結果」を1件ずつ見ると0.7や0.8といった小数点第一位までのデータしか存在していないのです。 このような現象は何故おこるのでしょうか? 申し訳ありませんがよろしくお願い致します。 |
▼AC初心者 さん Wrote: >Aテーブルに「結果」という数値型(倍精度浮動小数点型)のフィールドが >あります。 >「結果」にはユーザーがフォームにて入力した数字の値が入ります。 >その値をクエリーにて別のフィールドでグループ化し、「結果」フィールド > の合計をとると小数点が限りなく入っているデータになってしまいます。 結論から言うと、それは浮動小数点型の特性(バグではない)です。 コンピュータ内での数字を扱う時、内部では2進数で表現するのですが、 小数点以下の数値を完全に正しく常に保持する事はできません。 >「結果」を1件ずつ見ると0.7や0.8といった小数点第一位までの > データしか存在していないのです。 小数点以下の桁数が1〜4ぐらいと決まっているなら通貨型(Currency) を使われると良いでしょう。 通貨型は内部で値を1万倍し、4桁までの小数点以下を整数化する事で 演算時の誤差が出ないようにしています。 |