我正在尝试在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之间有什么区别吗?
答案 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具有更多的重载。
无论哪种方式,你都需要再次将它们强制转换为整数。