在 VB.NET 中,即使两个操作数都是整数,/
运算符也会导致值是浮点数(如果结果是非整数)。
所以我尝试使用\
产生整数值的运算符,而与操作数无关。
所以我认为\
是整数除法。
2.5 \ 3
结果0
。
现在我试过了1.5 \ 2
。我希望它是,0
但它导致了1
.
现在,它是错误还是正确的结果?运营商究竟是什么
?\
如果它是一个错误,它就存在于 VB6 中。
在 VB.NET 中,即使两个操作数都是整数,/
运算符也会导致值是浮点数(如果结果是非整数)。
所以我尝试使用\
产生整数值的运算符,而与操作数无关。
所以我认为\
是整数除法。
2.5 \ 3
结果0
。
现在我试过了1.5 \ 2
。我希望它是,0
但它导致了1
.
现在,它是错误还是正确的结果?运营商究竟是什么
?\
如果它是一个错误,它就存在于 VB6 中。
如果\
在非整数上使用,首先将它们转换为整数,这会导致舍入:相当于CLng(1.5) \ 2
, 即2 \ 2
or 1
。
如果你使用Option Strict On
,那么你会看到这种情况发生。
请参阅文档Remarks
中的- 部分:
在执行除法之前,Visual Basic 会尝试将任何浮点数值表达式转换为 Long。... 转换为 Long 也取决于庄家的四舍五入。
这意味着 1.5 \ 2 变为 2 / 2 即 1。
银行家的四舍五入(来自Type Conversion Functions):
如果小数部分正好是 0.5,整数转换函数会将其四舍五入到最接近的偶数整数。例如,0.5 舍入为 0,1.5 和 2.5 均舍入为 2。这有时称为银行家舍入,其目的是补偿在将许多此类数字相加时可能累积的偏差。
不是错误,而只是将结果四舍五入到最接近的整数。运算符 / 用于在数字和整数之间进行除法 float 或 double,不要忘记 Decimal 类型。
问候。