'' 切り上げ・切り捨ての処理区分 Public Enum Enum_ROUND_SHORIKBN ROUND_SHORIKBN_SISYAGONYU ''' 四捨五入 ROUND_SHORIKBN_KIRIAGE ''' 切り上げ ROUND_SHORIKBN_KIRISUTE ''' 切り捨て End Enum ' @(f) ' ' 機能 : 四捨五入、切り捨て、切り上げ ' ' 返り値 : 処理後の数値 ' ' 引き数 : ARG1 - 数値 ' ARG2 - 小数点以下桁数 ... 既定値 - 0 ' ARG3 - 処理区分(列挙型 Enum_ROUND_SHORIKBN より選択) ' ... 既定値 - 四捨五入 ' ' 機能説明 : 数値の四捨五入、切り捨て、切り上げを行う。 ' ' 備考 : ' Function pRound(ByVal varNum As Variant, _ Optional ByVal intDecimalPoint As Integer = 0, _ Optional ByVal enmUpDown As Enum_ROUND_SHORIKBN = _ ROUND_SHORIKBN_SISYAGONYU) As Variant Dim varWkNum As Variant Dim intPlusMinus As Integer If varNum < 0 Then intPlusMinus = -1 Else intPlusMinus = 1 End If varWkNum = CDec(varNum) Select Case UCase(enmUpDown) Case ROUND_SHORIKBN_KIRIAGE '' 切り上げ varWkNum = Fix(varWkNum * (10 ^ intDecimalPoint)) _ / (10 ^ intDecimalPoint) If varWkNum <> varNum Then varWkNum = varWkNum + (10 ^ (intDecimalPoint * -1)) _ * intPlusMinus End If Case ROUND_SHORIKBN_KIRISUTE '' 切り捨て varWkNum = Fix(varWkNum * (10 ^ intDecimalPoint)) _ / (10 ^ intDecimalPoint) Case Else '' 四捨五入 varWkNum = varWkNum + (0.5 * 10 ^ (intDecimalPoint * -1)) _ * intPlusMinus varWkNum = Fix(varWkNum * (10 ^ intDecimalPoint)) _ / (10 ^ intDecimalPoint) End Select pRound = varWkNum End Function