Int()方法和VB.NET中的Math.Floor()方法有什么区别?

What's the difference between the Int() method and Math.Floor() methods in VB.NET?

我正在尝试生成 2 个值之间的正随机整数,MSDN 将此公式列为生成特定范围内的随机数:
randomValue = CInt(Math.Floor((upperbound - lowerbound + 1) * Rnd())) + lowerbound.
该页面稍后列出了一个似乎使用 Int() 而不是 Math.Floor():
的示例 Dim value As Integer = CInt(Int((6 * Rnd()) + 1)).
在这种情况下Int方法和Math.Floor有什么区别吗?

Int() 是 .NET 出现之前 VB 中存在的遗留函数。

源代码不包含在参考源代码中,但一个不错的反编译器可以向您展示它的作用。导航到 Microsoft.VisualBasic.Conversion class 可以看到:

public static double Int(double Number)
{
    return Math.Floor(Number);
}

没有惊喜,用你喜欢的口味。

这是细分...

    CInt(0.1)  -----> 0
    CInt(0.7)  -----> 1
    CInt(-0.1) -----> 0
    CInt(-0.7)  -----> -1

    Int(0.1)  -----> 0.0
    Int(0.7)  -----> 0.0
    Int(-0.1) -----> -1.0
    Int(-0.7)  -----> -1.0

    Math.Floor(0.1)  -----> 0.0
    Math.Floor(0.7)  -----> 0.0
    Math.Floor(-0.1) -----> -1.0
    Math.Floor(-0.7) -----> -1.0

或者,如果您愿意,CInt 更像是 Math.Round,而 floor 是 NEXT LOWEST INTEGER.. 请注意,这是NOT 下一个最接近零。

Int 类似于 Floor,但 Floor only accepts types Decimal or Double, where as Int 有更多重载。

无论哪种方式,您都需要再次将它们强制转换为整数。