在VB中是\整数除法?

dot*_*ner 7 vb.net division integer-division

在VB.NET中,即使两个操作数都是整数,'/'运算符也会导致值浮动(如果结果是非整数).
所以我尝试使用'\'运算符产生整数值而不管操作数.

所以我认为'\'是整数除法

2.5\3结果0

现在我尝试了
1.5\2
我预计它会为0但它会导致1.
现在,这是一个错误还是正确的结果?
实际上是什么'''运算符?

如果它是一个错误,它通过VB6存在

Meh*_*dad 16

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

如果您使用,Option Strict On那么您将看到这种情况发生.

  • @dotNETbeginner它使用银行家四舍五入或"四舍五入".所以它实际上是'2\3 = 0`.请参阅[转换](http://msdn.microsoft.com/en-us/library/s2dy91zy.aspx)中的备注:"如果小数部分恰好为0.5,则整数转换函数将其四舍五入为最接近的偶数整数.例如,0.5轮到0轮,1.5和2.5轮到2轮.这有时被称为银行家的舍入,其目的是弥补在将许多这样的数字加在一起时可能累积的偏差. (4认同)
  • "Option Strict On"的+1,我不知道,从现在开始可能会使用,是一个严谨的狂热者. (3认同)
  • @Jean-FrançoisCorbett:实际上,您可以全局打开它,而不是对每个文件单独打开它:转到“工具”->“项目和解决方案”->“ VB默认值”,然后将其打开。哎呀,把它们全部打开!如果这样做,您将获得类型推断所包含的最大严谨性,从而使生活更轻松。 (2认同)

vst*_*stm 5

请参阅文档中Remarks-Section :

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

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

银行家的舍入(来自类型转换函数):

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