I am not sure why, but after some testing. It is pretty interesting.
Anyway, to solve this issue, use CInt instead of Int. The Int() function seems to give this strange result, but CInt is totally fine. Also this problem only happends when you use Int() function. If you just do msgbox cstr(1.4 * 100), it will give you 140.
Try this code to see how things behave.
' explicit double Dim a1 As Double, a2 As Double a1 = 1.4 a2 = 100 MsgBox "CStr(a1 * a2) = " + CStr(a1 * a2) + vbNewLine + _ "CStr(Int(a1 * a2)) = " + CStr(Int(a1 * a2)) + vbNewLine + _ "CStr(CInt(a1 * a2)) = " + CStr(CInt(a1 * a2)) ' implicit Dim b1, b2 b1 = 1.4 b2 = 100 MsgBox "CStr(b1 * b2) = " + CStr(b1 * b2) + vbNewLine + _ "CStr(Int(b1 * b2)) = " + CStr(Int(b1 * b2)) + vbNewLine + _ "CStr(CInt(b1 * b2)) = " + CStr(CInt(b1 * b2)) ' direct const MsgBox "CStr(1.4 * 100) = " + CStr(1.4 * 100) + vbNewLine + _ "CStr(CInt(1.4 * 100)) = " + CStr(CInt(1.4 * 100)) + vbNewLine + _ "CStr(Int(1.4 * 100)) = " + CStr(Int(1.4 * 100)) + vbNewLine + _ "CStr(Int(CDbl(1.4 * 100))) = " + CStr(Int(CDbl(1.4 * 100))) |