Accessで小数点以下の端数処理をする方法はいくつかあります。
切り上げ、切り捨て、四捨五入がありますが今回は用途に応じてそれぞれの方法をご紹介します。
数学関数を使って小数点以下の端数処理をする方法
Accessで端数処理に使える関数には、Fix関数、Int関数、round関数があります。
ただし、round関数は一見四捨五入に見えて私たちが通常考える四捨五入ではないのでAccessでは使わないようにしましょう。(詳しい説明は割愛しますので、とにかく使えないと思ってください。)
という訳で、使える関数はFix関数とInt関数の二択です。
VBAにはInt関数と似た関数でCInt 関数があります。
Cint関数はInt関数とは異なり小数部分を丸めますので混同しなように注意が必要です。
CInt関数は小数部分が 0.5 の場合は、常に最も近い偶数に値を丸めます。たとえば、0.5 を 0 に、1.5 を 2 に、それぞれ丸めます。
Fix関数とInt関数の使い方
Fix関数もInt関数も、引数は数値のみで戻り値は小数点以下を切り捨てた値です。
両方とも端数を切り捨てる関数ですが、両関数は負の数の「.5」をどのように処理するかが異なります。
ということは、正の数の端数処理をする場合はどちらの関数を使っても同じ値が戻るということです。
具体的に負の数の「0.5」の扱いがどのように違うか見てみましょう。
Accessのクエリーに各関数を指定しました。
端数処理の結果は以下の通りです。
●Fix(-1.5) ⇒ -1
●Int(-1.5) ⇒ -2
Int関数は数値以下の最大の整数を返しますので、-1.5は-2になります。
Fix関数は数値の小数部分を単純に取り除いた値を返しますので-1.5は-1になります。
Int関数とFix関数を使って四捨五入する方法
Int関数とFix関数はとにかく端数を切り捨てる処理なので、四捨五入したい場合一工夫が必要です。
基本的には四捨五入したい数値に0.5を加算して切り捨てます
負の数の話をするとややこしくなるので、正の数で方法を確認します。
12.6 → 12.6 + 0.5 = 13.1 → Fix(13.1) →13
12.4 → 12.4 + 0.5 = 12.9 → Fix(12.9) →12
例ではFix関数を使っていますが、正の数なのでInt関数でも同じ結果になります。
正の数しか処理しない場合はこれで終わりです。
小数第〇位までで四捨五入したい場合は、一旦数値に第〇位の桁数をかけて小数点の位置をずらし端数処理した後で再度、第〇位の桁数で除算します。
小数第2位で四捨五入したい(一旦10を掛けて小数点位置をシフト)
12.67 → 12.67 * 10 + 0.5 = 127.2
→ Fix(127.2)/10 →12.7
負の数の四捨五入
負の数が発生する場合の四捨五入では、少し注意が必要です。
Int関数を利用する場合は、正数でも負数でも0.5を加算してから処理します。
(正数)1.7 → 1.7 + 0.5 = 2.2 → Int(2.2)=2
(負数)-1.7 → -1.7 + 0.5 = -1.2 → Int(-1.2)=-2
Fix関数を利用する場合は、正数の場合は0.5を加算、負数の場合は-0.5を加算してから処理します。
(正数)1.7 → 1.7 + 0.5 = 2.2 → Fix(2.2)=2
(負数)-1.7 → -1.7 – 0.5 = -2.2 → Fix(-2.2) = -2
文字列関数を使用して四捨五入する方法
Accessのformat関数(文字列整形関数)を使用して四捨五入する方法もあります。
format関数の引数は、第一引数【値】と、フォーマットです。
1.57 → format(1.57, “0.0”) → 1.6
1.578 → format(1.578, “0.00”) → 1.58
この場合値は文字列として戻りますので数値で戻す必要がある場合は数字に変換する必要があります。
Cdbl(format(1.57, “0.0”))
たまに使うと「どっちだったかな?」と迷う関数です。
注意しながら使いましょう。
\逆引き辞書があると便利です/
[itemlink post_id=”1386″]