切り捨てを行うには

Last-modified: 2021-12-26 (日) 03:53:26
Public Function Floor(varValue As Variant, Optional intDigits As Integer = 0) As Variant
    If intDigits = 0 Then
        Floor = Int(varValue)

    Else
        Floor = Int(varValue * 10 ^ intDigits) / 10 ^ intDigits

    End If

End Function
Public Sub Test_Floor()
    '整数で切り捨て
    Debug.Assert Floor(1E-99) = 0

    Debug.Assert Floor(0.1) = 0
    Debug.Assert Floor(0.9) = 0

    Debug.Assert Floor(1.1) = 1
    Debug.Assert Floor(1.9) = 1

    '小数点以下第1位で切り捨て
    Debug.Assert Floor(0.1, 1) = 0.1
    Debug.Assert Floor(0.11, 1) = 0.1
    Debug.Assert Floor(0.111111111111111, 1) = 0.1

    '小数点以下第2位で切り捨て
    Debug.Assert Floor(0.1, 2) = 0.1
    Debug.Assert Floor(0.11, 2) = 0.11
    Debug.Assert Floor(0.111111111111111, 2) = 0.11

    Debug.Assert Floor(0.111111111111111, 14) = 0.11111111111111
    Debug.Assert Floor(0.111111111111111, 15) = 0.111111111111111

    '10の位で切り捨て
    Debug.Assert Floor(1.1, -1) = 0
    Debug.Assert Floor(11.11, -1) = 10
    Debug.Assert Floor(99.99, -1) = 90

    '100の位で切り捨て
    Debug.Assert Floor(11.11, -2) = 0
    Debug.Assert Floor(111.111, -2) = 100
    Debug.Assert Floor(999.999, -2) = 900

End Sub