Accessによる切り捨て・四捨五入・切り上げ

全般

Accessで小数データを処理する際に、小数点以下を切り捨て・四捨五入・切り上げすることがあります。

ExcelではそれぞれROUNDDOWN関数、ROUND関数、ROUNDUP関数があり、簡単に処理をしてくれますが、Accessにはこれらに相当する関数がありません。このため、「INT関数」を活用し数値処理をする必要がありますので、今回はその方法を紹介したいと思います。

スポンサーリンク

サンプルデータ

サンプルデータ作成に当たり「数値テーブル」を作成し、一つのフィールドを作成します。フィールド名は「数値」、データ型は「数値型」、フィールドサイズは「倍精度浮動小数点型」とします。そして、次のデータを入力しておきます。

■サンプルデータ

数値
1.23
1.37
1.52
1.78

今回は、小数第1位及び小数第2位に対してその処理方法を見ていきましょう。

INT関数

小数以下の処理をする際に用いる関数として、「INT関数」があります。

Int(数値)
INT 関数の書式には、次の引数があります。

INT関数は、指定された数値を最も近い整数に切り捨てる処理をします。したがって、例えばINT(1.89)の場合は「1」が結果として返されます。

切り捨て処理

小数点以下の処理としてまずは「切り捨て」について考えてみましょう。「INT関数」それ自体が小数第1位の切り捨てをします。したがって、上記のように「1.89」を引数としてINT関数に与えることで、「1」が返ってきます。

さて、小数第2位以下で切り捨てをしたい場合はどうすれば良いでしょうか?これは、INT関数に与える引数を桁単位で乗じて処理をし、その後に改めて桁単位で除する方法があります。

具体的な例として、「1.89」を小数第2位で切り捨てる場合は、「INT(1.89*10)/10」とします。この式の処理を順番に考えていきます。

① 1.89*10 = 18.9
② INT(18.9) = 18・・・INT関数で小数点以下を切り捨て
③ 18/10 = 1.8

いかがでしょうか?上のプロセスのように、小数第N位で切り捨てをしたい場合は、次のように表記することができます。

INT(数値*10N-1)/10N-1

四捨五入処理

次に、小数点以下の処理として「四捨五入」について考えてみましょう。まずは、小数第1位に対する四捨五入を考えます。「INT関数」はそれ自体が小数第1位の切り捨てをします。そこで、対象となる数値に「0.5」を足した後、INT関数を適用します。すると、小数第1位の値が0.1~0.4のものについては繰り上がりされず、整数値に変化はありませんが小数第1位の値が0.5~0.9のものについては繰り上がりして整数値が1つ増えます。このため、INT関数を用いると小数第1位で四捨五入した結果が得られることになります。

これらを踏まえて先ほどと同じように、「1.89」を使って四捨五入の処理をするには、「INT(1.89+0.5)」と記載します。

① 1.89+0.5 = 2.39
② INT(2.39) = 2・・・小数第1位で四捨五入した値に一致

さて、小数第2位以下で四捨五入をしたい場合はどうすれば良いでしょうか?これも切り捨て処理と基本は同様です。INT関数に与える引数を桁単位で乗じた後に0.5を足して処理をし、その後に改めて桁単位で除する方法です。

具体的な例として、「1.89」を小数第2位で四捨五入場合は、「INT(1.89*10+0.5)/10」とします。この式の処理を順番に考えていきます。

① 1.89*10 = 18.9
② 18.9+0.5 = 19.4
② INT(19.4) = 19・・・INT関数で小数点以下を切り捨て
③ 19/10 = 1.9

いかがでしょうか?上のプロセスのように、小数第N位で四捨五入をしたい場合は、次のように表記することができます。

INT(数値*10N-1+0.5)/10N-1

切り上げ処理

最後に切り上げ処理を見ていきます。これは先に紹介した四捨五入とほぼ同じ考え方が適用でき、「0.5」の代わりに「0.9」を用います。

まずは、小数第1位に対する切り上げを考えます。「INT関数」はそれ自体が小数第1位の切り捨てをします。そこで、対象となる数値に「0.9」を足した後、INT関数を適用します。すると、小数第1位の値が繰り上がり整数値が1つ増え、INT関数により小数第1位で切り上げした結果が得られることになります。

これらを踏まえて先ほどと同じように、「1.23」を使って切り上げの処理をするには、「INT(1.23+0.9)」と記載します。

① 1.23+0.9 = 2.13
② INT(2.13) = 2・・・小数第1位で切り上げした値に一致

さて、小数第2位以下で切り上げをしたい場合はどうすれば良いでしょうか?これも四捨五入処理と同様で、INT関数に与える引数を桁単位で乗じた後に0.9を足して処理をし、その後に改めて桁単位で除する方法です。

「1.23」を小数第2位で切り上げする場合は、「INT(1.23*10+0.9)/10」とします。この式の処理を順番に考えていきます。

① 1.23*10 = 12.3
② 12.3+0.9 = 13.2
② INT(13.2) = 13・・・INT関数で小数点以下を切り捨て
③ 13/10 = 1.3

いかがでしょうか?上のプロセスのように、小数第N位で切り上げをしたい場合は、次のように表記することができます。

INT(数値*10N-1+0.9)/10N-1

クエリによる結果確認

これまでの内容をサンプルデータを用いて実際に処理をしてみます。

図1に示すように「数値テーブル」の各値に対して小数第1位及び小数第2位に対して、切り捨て、四捨五入、切り上げ処理をするクエリを作成しました。

図1 小数処理のクエリ

クエリの各フィールドは次のようにしています。

・数値
・小数第1位切り捨て: Int([数値])
・小数第2位切り捨て: Int([数値]*10)/10
・小数第1位で四捨五入: Int([数値]+0.5)
・小数第2位で四捨五入: Int([数値]*10+0.5)/10
・小数第1位で切り上げ: Int([数値]+0.9)
・小数第2位で切り上げ: Int([数値]*10+0.9)/10

このようにクエリを作成し結果を確認したものが図2になります。

図2 小数処理の結果

まとめ

今回はAccessによる小数の処理方法について紹介をしました。Excelと違って、INT関数を活用することで小数の処理を実現しました。

この方法はExcelに慣れていると意外と気づきにくいものですが、一度処理方法を覚えてしまえば、様々な場面で活用できると思いますので、この機会に是非覚えていただければと思います。

スポンサーリンク

コメント

タイトルとURLをコピーしました