Accessのクエリで四捨五入
Accessには、四捨五入を行う関数がない。
Accessのクエリで四捨五入を行うには、Int関数、またはFix関数を利用する。
Int関数とFix関数
引数には共に「数値(number)」を指定する。
Int関数は、数値以下の最大の整数を返す。
Fix関数は、数値の小数部分を除去した値を返す。
数値が正数の場合はInt関数とFix関数の戻り値は同じだが、負数の場合は異なる。
1 2 | Int(1.7) ⇒ 1 Fix(1.7) ⇒ 1 |
1 2 | Int(-1.7) ⇒ -2 Fix(-1.7) ⇒ -1 |
1 2 | Int(Null) ⇒ Null Fix(Null) ⇒ Null |
数値を四捨五入する
数値に「0.5」を加算した値をInt関数、またはFix関数に渡す。
ただし、数値が負数の場合にFix関数に渡す値は「-0.5」を加算した値とする。
Int関数を利用した式とFix関数を利用した式は、[数値]が正数の場合は同じ結果になるが、負数の場合は結果が異なる。
Fix関数を利用した式が一般的な四捨五入になるが、負数を考慮する必要がない場合はInt関数を利用した式がシンプル。
<Int([数値] + 0.5)>
[数値]が「1.6」 ⇒ 「2」
[数値]が「1.5」 ⇒ 「2」
[数値]が「1.4」 ⇒ 「1」
[数値]が「-1.4」 ⇒ 「-1」 ←「-0.9」以下の最大の整数値
[数値]が「-1.5」 ⇒ 「-1」 ←「-1.0」以下の最大の整数値
[数値]が「-1.6」 ⇒ 「-2」 ←「-1.1」以下の最大の整数値
<Fix([数値] + 0.5 * Sgn([数値]))>
[数値]が「1.6」 ⇒ 「2」
[数値]が「1.5」 ⇒ 「2」
[数値]が「1.4」 ⇒ 「1」
[数値]が「-1.4」 ⇒ 「-1」 ←「-1.9」の小数部を除去した値
[数値]が「-1.5」 ⇒ 「-2」 ←「-2.0」の小数部を除去した値
[数値]が「-1.6」 ⇒ 「-2」 ←「-2.1」の小数部を除去した値
※Sgn関数は、引数の「数値(number)」が「0より大きい」場合に「1」、「0」の場合に「0」、「0より小さい」場合に「-1」を返す。
四捨五入の桁を指定する
四捨五入を小数点第2位や小数点第3位で行いたい場合は、小数点の位置をシフトして四捨五入をしてから、小数点の位置を戻す。
<小数点第2位を四捨五入する>
「1.44を1.4」、「1.45を1.5」というように小数点第2位を四捨五入する場合は、数値を10倍して四捨五入してから10で割る。
1 2 | Int([数値] * 10 + 0.5) / 10 Fix([数値] * 10 + 0.5 * Sgn([数値])) / 10 |
<小数点第3位を四捨五入する>
「1.244を1.24」、「1.245を1.25」というように小数点第3位を四捨五入する場合は、数値を100倍して四捨五入してから100で割る。
1 2 | Int([数値] * 100 + 0.5) / 100 Fix([数値] * 100 + 0.5 * Sgn([数値])) / 100 |
<10の位を四捨五入する>
「1240を1200」、「1250を1300」というように10の位を四捨五入する場合は、数値を100で割って四捨五入してから100倍する。
1 2 | Int([数値] / 100 + 0.5) * 100 Fix([数値] / 100 + 0.5 * Sgn([数値])) * 100 |