11/20/2022

Access。四捨五入のRound関数はExcelとAccessで大違いなので注意が必要です。【Round】

Access。四捨五入のRound関数はExcelとAccessで大違いなので注意が必要です。

<Access:Round関数>

ExcelにあるROUND関数は、四捨五入でおなじみです。


Accessの関数にも、Round関数があって、四捨五入をする関数なのですが、Excelと違った結果になるので注意が必要です。


下記の表は、AccessでRound関数をつかった結果のクエリです。

AccessのRound関数

小数第1フィールドには、次の演算フィールドを設定しています。

小数第1: Round([値],1)


引数の2つ目に「1」と設定することで、小数点第2位を四捨五入して小数点第1位を求めることができます。


ただ、結果がおかしいですよね。


1.44は、1.4。

これは問題ありませんが、1.45を四捨五入したら、1.5になるはずですが、1.4と算出されています。


1.54は、「1.5」と算出されていて、1.55は「1.6」と四捨五入された結果が表示されています。


AccessのRound関数は四捨五入を行うことは行うのですが、「銀行丸め」とかJIS式と呼ばれる四捨五入で算出されているために、お馴染みの四捨五入と結果が異なってしまうのです。


Excelの四捨五入のROUND関数は、算術における四捨五入なんですね。


整数フィールドには、

整数: Round([値])

という演算フィールドを設定してあります。

2つ目の引数を省略すると整数で四捨五入してくれます。


1の位フィールドには、

1の位: Round([値],-1)

という演算フィールドが設定してあります。


しかし、結果は、エラーが表示されています。


2つ目の引数を「-1」とすれば、Excelの場合、1の位を四捨五入してくれるのですが、AccessのRound関数は、小数点にしか対応してくれません。


つまり、整数の端数には対応していないというわけです。


そのため、AccessのRound関数をつかって四捨五入をすると、Excelと異なった値になる。

または、整数値では対応してくれないということが発生しますので、注意が必要です。