Access。四捨五入で整数にするならExcelではROUND関数では、Accessでは
<ROUND関数>
四捨五入で整数にするにはExcelだとROUND関数をつかいます。
B列の数値は小数点がありますが、この小数点を四捨五入した結果がC列にあります。
C2の数式は、
=ROUND(B2,0)
オートフィルで数式をコピーしました。
C4は124.4で四捨五入すると124
C5は124.5で四捨五入すると125
きちんと四捨五入されていますね。
では、Accessではどのようにしたらいいのでしょうか。
Accessのテーブルを用意しました。
Excelのデータと同じです。
そして、Accessにも、四捨五入のRound関数が用意されています。
では、クエリで、四捨五入をつくってみましょう。
演算フィールドをつくります。
Round関数: Round([数値],0)
AccessもExcelと同じ引数ですね。整数にしたいので、桁はExcel同様に0とします。
では、クエリを実行してみましょう。
四捨五入されて、整数化されていますが、何かおかしい。
よくみると、124.5の結果が、Excelだと125なのに、Accessでは124になっています。
124.5なんだから、125が正解のはずですよね。
Accessは間違っているということ。ではないんですね。実は、ExcelとAccessの四捨五入は四捨五入であっても、異なっています。
Excelの四捨五入は、算術の四捨五入なんですが、Accessの四捨五入は、JIS式の丸め処理を行います。
一般的な四捨五入(Excel の ROUND関数)
- 1〜4 → 切り捨て
- 5〜9 → 切り上げ
「5」は必ず切り上げるため、丸めを繰り返すと数値が大きい方向に偏りやすい
■ JIS 式の丸め(Access の Round関数)
- 桁以下が ちょうど 5 のとき
→ 結果が偶数になるように丸める(偶数丸め)
- 「5」を切り上げる場合と切り捨てる場合が 半々になる
- そのため、一般的な四捨五入のような 偏りが発生しにくい
「銀行型丸め(Banker’s Rounding)」とも呼ばれています。
このようなことから、同じ結果にならないことがありますので、注意が必要です。
では、どのようにしたらいいのでしょうか。
新たに、演算フィールドをつくりました。
四捨五入: Int([数値]+0.5)
では、実行してみましょう。
これでExcelと同じになりました。
偶数奇数関係なく、数値に0.5を足した値を、整数化するInt関数をつかうことで、対応すれば、ExcelのROUND関数と同じ結果になります。
合致する・しないで悩まないように、Access関数のRound関数を使用する・しないは検討する必要がありそうですね。






