Round_FS()

数値の任意の桁を指定して四捨五入切り捨て切り上げする関数です。
Access 2000で、小数点以下の任意の桁で四捨五入する Round() 関数が追加されました。Access 97では、Round()関数はサポートされていませんので、独自のユーザー定義関数を作成する必要があります。

Access 2000のRound()関数は、小数部にのみ適用されますがここで紹介するRound_FS()関数は、整数部にも適用できます。

Tip:
Access 2000のRound()関数は、特定の数値を四捨五入すると期待したのと異なる値を返すことがあります。例えば、Round(9.575,2)を実行すると 9.57が返ります。Round_FS(9.575,2)では、9.58が返されます。この不具合を回避するには、Round(CDec(9.575),2)のようにCDec()関数とペアで使用します。

構文

Round_FS(varNumber As Variant, intDigits As Integer, _
   Optional sngRound As Single = 0.5) As Double

引数

指定項目 内容
varlNumber 四捨五入、切り捨て、切り上げする数値を指定します。
intDigits 四捨五入、切り捨て、切り上げする桁数を指定します。
小数部の桁数は、正(1,2,3,...)の数値を指定します。  
整数部の桁数は、負(-1,-2,-3,....)の数値を指定します。 
sngRound 0.5:四捨五入(既定値)
0.0:切り捨て
0.9:切り上げ(小数部の桁数はintDigitsの桁数を元に調整します)

戻り値

Double 四捨五入、切り捨て、切り上げした結果を数値として返します。

使用例

Sub Round_EX()
Debug.Print "1円未満の端数を四捨五入: 123.5 =>", Round_FS(123.5, 0)          ' 124
Debug.Print "1円未満の端数を切り捨て: 123.1 =>", Round_FS(123.1, 0, 0#)      ' 123
Debug.Print "1円未満の端数を切り上げ: 123.1 =>", Round_FS(123.1, 0, 0.99)    ' 124

Debug.Print "10円未満の端数を四捨五入: 12345 =>", Round_FS(12345, -1)       ' 12350
Debug.Print "10円未満の端数を切り捨て: 12341 =>", Round_FS(12341, -1, 0#)   ' 12340
Debug.Print "10円未満の端数を切り上げ: 12341 =>", Round_FS(12341, -1, 0.99) ' 12350
End Sub       


Round_FS()関数:

Public Function Round_FS( _
  ByVal varNumber As Variant, intDigits As Integer, _
  Optional sngRound As Single = 0.5) As Double
  Dim dblPower As Double
  Dim varTemp As Variant
  Dim intSgn As Integer
  
  dblPower = 10 ^ intDigits
  intSgn = Sgn(varNumber)
  varNumber = Abs(varNumber)
  varTemp = CDec(varNumber) * dblPower + sngRound
  Round_FS = intSgn * Int(varTemp) / dblPower  
End Function