8

在 VB.NET 中,即使两个操作数都是整数,/运算符也会导致值是浮点数(如果结果是非整数)。

所以我尝试使用\产生整数值的运算符,而与操作数无关。
所以我认为\是整数除法。

2.5 \ 3结果0

现在我试过了1.5 \ 2。我希望它是,0但它导致了1.
现在,它是错误还是正确的结果?运营商究竟是什么
\

如果它是一个错误,它就存在于 VB6 中。

4

3 回答 3

17

如果\在非整数上使用,首先将它们转换为整数,这会导致舍入:相当于CLng(1.5) \ 2, 即2 \ 2or 1

如果你使用Option Strict On,那么你会看到这种情况发生。

于 2011-08-26T05:58:21.473 回答
5

请参阅文档Remarks中的- 部分:

在执行除法之前,Visual Basic 会尝试将任何浮点数值表达式转换为 Long。... 转换为 Long 也取决于庄家的四舍五入。

这意味着 1.5 \ 2 变为 2 / 2 即 1。

银行家的四舍五入(来自Type Conversion Functions):

如果小数部分正好是 0.5,整数转换函数会将其四舍五入到最接近的偶数整数。例如,0.5 舍入为 0,1.5 和 2.5 均舍入为 2。这有时称为银行家舍入,其目的是补偿在将许多此类数字相加时可能累积的偏差。

于 2011-08-26T06:04:50.843 回答
2

不是错误,而只是将结果四舍五入到最接近的整数。运算符 / 用于在数字和整数之间进行除法 float 或 double,不要忘记 Decimal 类型。

问候。

于 2011-08-26T06:02:57.733 回答