Microsoft Access 掲示板

テーブルの構造について

3 コメント
views
4 フォロー

テーブルの構造でついてです

フィールド名は、利益

フィールドサイズ ⇒ 十進型
書式 ⇒ 標準
精度 ⇒ 18
小数点以下保持桁数 ⇒ 1
小数点以下表示桁数 ⇒ 1

Excelのデータで、5.6を、値貼りすると、5.6が、5.5になります。

小数点の計算をするために、

フィールドサイズ ⇒ 十進型
書式 ⇒ 標準
精度 ⇒ 18
小数点以下保持桁数 ⇒ 1
小数点以下表示桁数 ⇒ 1

このような設定にしました。

手入力では、5.6と入力できます。

Excelの値を貼ると、なぜ、5.5にんるのでしょうか?

おしえてくださいませ
よろしくお願いいたします。

しん
作成: 2024/09/18 (水) 17:57:20
通報 ...
1

Excelのデータで、5.6を、値貼りすると、5.6が、5.5になります。

Excelワークシート上において、そのセルの表示形式がどのように設定されているか、
もし「数値」形式または「通貨」形式である場合、[小数点以下の桁数]プロパティが
いくつに設定されているのかを具体的に明記して下さい。

フィールドサイズ ⇒ 十進型
書式 ⇒ 標準
精度 ⇒ 18
小数点以下保持桁数 ⇒ 1
小数点以下表示桁数 ⇒ 1

現時点では、「コピーされたセルの実際の値は 5.6 ピッタリではなく、
5.5 以上 5.6 未満の数値である」可能性が最も高いと思います。

2
しん 2024/09/19 (木) 13:59:54 051ad@9fff4

sk様

悪戦苦闘しましたが、単精度浮動小数点型にしたら、改善しました。

いつも、回答ありがとうございます。

3

悪戦苦闘しましたが、単精度浮動小数点型にしたら、改善しました。

対症療法的な解決で、本質的な解決策ではないと思います。

原因はskさんも推定している「実際の値は 5.6 ピッタリ」ではないのだと思います。

小数点以下桁数を固定にした場合、単精度浮動小数点型は丸められて表示されるので、見た目上は5.6になっていても実際の値はそうでない可能性があります。

これでは集計した場合など演算誤差の原因になります。
そもそも浮動小数点型は演算誤差がありますので、誤差が発生しては困る金額計算には使用すべきではありません。

フィールド名が「利益」ということなので金額値だと思いますので「通貨型」にするのが適切です。

そのうえで小数点2桁以降の端数処理をどうするのかの仕様(切り捨て、切り上げ、四捨五入、金融機関型丸めなど)を決めて演算時に丸め処理をするような設計にすべきです。