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

时间:2017-02-28 17:57:52

标签: vb.net visual-studio random int floor

我正在尝试在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之间有什么区别吗?

2 个答案:

答案 0 :(得分:4)

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

源不包含在参考源中,但是一个体面的反编译器可以显示它的作用。导航到Microsoft.VisualBasic.Conversion类以查看:

{{1}}

没有惊喜,请使用您喜欢的口味。

答案 1 :(得分:-1)

这是细分......

    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 ,而楼层是NEXT LOWEST INTEGER ..请注意 NOT 接下来最接近零。

Int 与Floor相同,但Floor只接受十进制 Double 类型,其中Int具有更多的重载。

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