【VB.NET】切り上げ/切り捨て/四捨五入

''' <summary>
''' 切り上げ。
''' </summary>
''' <param name="value">対象の数値。</param>
''' <param name="decimalPlaces">有効小数桁数。</param>
''' <returns>切り上げした数値。</returns>
Public Shared Function RoundUp(ByVal value As Decimal, ByVal decimalPlaces As UInt32) As Decimal
    Dim rate As Decimal = CDec(Math.Pow(10.0R, decimalPlaces))

    If value < 0 Then
        Return (Math.Ceiling(value * -1D * rate) / rate) * -1D
    Else
        Return Math.Ceiling(value * rate) / rate
    End If
End Function

''' <summary>
''' 切り捨て。
''' </summary>
''' <param name="value">対象の数値。</param>
''' <param name="decimalPlaces">有効小数桁数。</param>
''' <returns>切り捨てした数値。</returns>
Public Shared Function RoundDown(ByVal value As Decimal, ByVal decimalPlaces As UInt32) As Decimal
    Dim rate As Decimal = CDec(Math.Pow(10.0R, decimalPlaces))

    If value < 0 Then
        Return (Math.Floor(value * -1D * rate) / rate) * -1D
    Else
        Return Math.Floor(value * rate) / rate
    End If
End Function

''' <summary>
''' 四捨五入。
''' </summary>
''' <param name="value">対象の数値。</param>
''' <param name="decimalPlaces">有効小数桁数。</param>
''' <returns>四捨五入した数値。</returns>
Public Shared Function Round(ByVal value As Decimal, ByVal decimalPlaces As UInt32) As Decimal
    Return Math.Round(value, CInt(decimalPlaces), MidpointRounding.AwayFromZero)
End Function