0

我试图在划分两个变量后得到一个数字的整数部分。即,如果值为 3.75 displaycount 和 itemcount 都是整数变量,则得到 3。

    Dim cntr As Integer        
    cntr = Math.Floor(Math.Abs(itemCount / displaycount))

该代码在 VS2012 中生成蓝色波浪线,并带有注释“将 Double 转换为 Integer 时可能发生运行时错误”,但 Math.Floor 应该采用小数或双精度并返回整数。

4

2 回答 2

4

“Math.Floor 应该采用小数或双精度并返回一个整数。” 不,不是。它返回一个与其参数类型相同的值。请参阅文档,例如Math.Floor Method (Double)

我本来希望 VS 建议在任务的 RHS 周围添加 CInt() 的修复;那不是为你出现的吗?

于 2013-10-13T16:21:50.683 回答
1

如果您需要 Integer 作为结果,请考虑使用CIntIntFix函数。

  • CInt使用庄家四舍五入法四舍五入到最接近的整数(n.5 向最接近的偶数四舍五入)。

  • Int删除小数部分。负数被截断为更小的数字
    Int(-8.4) = -9

  • Fix移除小数部分。负数被截断为更大的数
    Fix(-8.4) = -8

请参阅Conversion.Int 方法类型转换函数 (Visual Basic)

于 2013-10-13T17:02:47.440 回答