11/01/2025

Access。小数点以下の扱いがRound・Int・Fix関数で微妙に異なります。【decimal】

Access。小数点以下の扱いがRound・Int・Fix関数で微妙に異なります。

<Round関数・Int関数・Fix関数>

Excelには、ROUND関数・ROUNDUP関数・ROUNDDOWN関数といった、小数点を切り上げ、切り捨てする関数が用意されています。


また、INT関数やTRUNC関数といった整数化する関数も用意されています。


Accessにも、Round関数・Int関数・Fix関数という関数が用意されていますが、それぞれ微妙に異なっていますし、Excelとも違いがあります。


例えば、Accessには四捨五入する関数はありません。

Round関数がありますが、銀行型の丸め処理(JIS式の丸め処理)を行うので、一般的な四捨五入とは異なる結果が表示されます。


そこで、クエリをつかって、次の表をつくりました。

Round関数・Int関数・Fix関数

5.5と5.6の場合、Round関数は、切りあがって、6になっていますが、4.6は切りあがって5ですが、4.5は、切り捨てられていて4ですね。


これが銀行型の丸め処理(JIS式の丸め処理)にあたります。


Int関数とFix関数は、正数の場合は、同じように小数点以下を切り捨てて整数化しています。


0は、どの関数も当たり前ですが0です。


マイナスをみてみると、Round関数は、マイナスでも、銀行型の丸め処理をしております。-0.5は、0と切り捨てていますが、-1.5は切りあがって-2になっています。


Int関数とFix関数は、負数の場合、結果が異なっていることがわかります。

Int関数は、小数点はなくなっています。そして、次の値に近いほうに切りあがっています。

Fix関数は、小数点はなくなっています。Int関数と異なり0に近いほうに切りあがっています。


このように、Round関数・Int関数・Fix関数は、とくにマイナスの時に思っているように求めることができないことがありますので、注意が必要です。