「AccessのRound関数というのは四捨五入をする関数ではないのでしょうか?」
「Accessで四捨五入をするにはどうしたらいいのでしょうか?」
というご質問をいただくことがあります。
Excelのワークシート関数:ROUNDは四捨五入をする関数ですが、AccessのRound関数は丸めを行う関数であって四捨五入をする関数ではありません。
Round関数が四捨五入だと思っていた方は、とりあえずサンプルファイルの「Q_Round関数」クエリをご覧ください。
▼サンプルファイル(002655.mdb 220KByte Access 2000形式)ダウンロード
「1.5」「3.5」は、それぞれ「2」「4」に丸められていますが、
「2.5」は「3」ではなく「2」に丸められています。
これがAccessのRound関数の仕様なのです。
我々が一般的にイメージする四捨五入(4以下を切り捨て、5以上を切り上げ)は「算術型丸め処理」と呼ばれるのに対し、AccessのRound関数の仕様は「通貨型丸め処理」「銀行型丸め処理」と呼ばれ、「丸めた結果が偶数になるように丸められます。
なお、Access 2003などのRound関数のヘルプには、「小数点以下の指定された桁以下を四捨五入した数値を返します。」なんて書かれてしまっているので、ヘルプを是非修正していただきたいと私は思っています。
([元の数値]フィールドから、[四捨五入]フィールドを作成する例) クエリをデザインビューで開く
↓
フィールド欄に、
「四捨五入: Int([元の数値]+0.5)」
と記述する
元の数値に、「0.5」を加算しておいてから、Int関数で小数点以下を切り捨て、整数部分だけにするわけです。こうすれば、小数点以下を四捨五入したのと同じ結果になります。
サンプルファイルの「Q_四捨五入」クエリに、上記のような演算フィールドを作成してありますので、ご覧ください。
「2.5」が四捨五入され「3」になっていることをご確認いただけるはずです。
- Newer:指定した月の日数を計算−DAY関数・DATE関数
- Older:OR条件で合計を集計する−DSUM関数
Home » Access(アクセス)の使い方 » 小数点以下を四捨五入する関数は?−0.5の加算+Int関数