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