1.4かける355を計算すると497のはずが496になってしまいます。
どなたか解決方法を教えてください。
Function RoundDown(X As Double, s As Integer) As Double
Dim T As Currency, w As Long
T = 10 ^ Abs(s) '単位調整用WK
If s > 0 Then '少数部か整数部かの判断
'少数部での切り捨て処理
If (Len(CStr(X)) - Len(Left(CStr(X), InStr(CStr(X), ".")))) <= s Then
RoundDown = X
Else
RoundDown = Int(X * T) / T
End If
Else
'整数部での切り捨て処理
RoundDown = Int(X / T * T)
End If
End Function
RoundDown 関数の第一引数を Currency 型にすれば正しく処理されると思います。
追記
Function RoundDown(X As Currency, s As Integer) As Double
↑こういうことです
RoundDown 関数の第一引数を Currency 型にすれば正しく処理されると思います。
追記
Function RoundDown(X As Currency, s As Integer) As Double
↑こういうことです
ごめんなさい。
具体的に記入していただけないでしょうか?
RoundDown (Currency)AAA みたいに><
ごめんなさい。よろしくお願いします。
この部分で桁あふれを起こしているのでしょう。
T = 10 ^ Abs(s)
関数を下記のようにしてみてください。
Function RoundDown(X As Double, s As Integer) As Double Dim n As Boolean Dim m As Double Dim i As Long m = X * s If (m < 0) Then n = False Else n = True End If i = Int(m) m = m - i If (m = 0) Then RoundDown = i Else RoundDown = i + 1 End If End Function
ごめんなさい。
具体的に記入していただけないでしょうか?
RoundDown (Currency)AAA みたいに><
ごめんなさい。よろしくお願いします。