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 有更多重载。
无论哪种方式,您都需要再次将它们强制转换为整数。
我正在尝试生成 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 有更多重载。
无论哪种方式,您都需要再次将它们强制转换为整数。