\ 在VB中执行整数除法吗?

发布于 2024-12-01 21:34:33 字数 364 浏览 0 评论 0原文

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

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

2.5 \ 3 结果为0

现在我尝试了1.5 \ 2。我预计它是 0,但结果是 1
现在,这是错误还是正确的结果?
\ 运算符实际上是什么?

如果这是一个错误,那么它在 VB6 中就一直存在。

In VB.NET even if both the operands are integer, the / operator will cause the value to be floating point (if the result is non integer).

So I tried with the \ operator which yields integer value irrespective of the operands.
So I thought \ is integer division.

2.5 \ 3 results in 0.

Now I tried 1.5 \ 2. I expected it to be 0 but it resulted in a 1.
Now, is it a bug or a correct result?
What the \ operator actually is?

If it's a bug it exists right through VB6.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

2024-12-08 21:34:33

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

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

If you use \ on non-integers, you first convert them to integers, which causes rounding: the equivalent of CLng(1.5) \ 2, which is 2 \ 2 or 1.

If you use Option Strict On then you will see this taking place.

眉黛浅 2024-12-08 21:34:33

请参阅文档中的备注部分:

在执行除法之前,Visual Basic 尝试将任何
浮点数值表达式转换为 Long。 ...转换为长整型
还需接受银行家的四舍五入。

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

银行家舍入(来自 类型转换功能):

<块引用>

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

See the Remarks-Section in the Documentation:

Before performing the division, Visual Basic attempts to convert any
floating-point numeric expression to Long. ... The conversion to Long
is also subject to banker's rounding.

That means 1.5 \ 2 becomes 2 / 2 which is 1.

Banker's rounding (from Type Conversion Functions):

If the fractional part is exactly 0.5, the integer conversion functions round it to the nearest even integer. For example, 0.5 rounds to 0, and 1.5 and 2.5 both round to 2. This is sometimes called banker's rounding, and its purpose is to compensate for a bias that could accumulate when adding many such numbers together.

素染倾城色 2024-12-08 21:34:33

不是错误,只是结果四舍五入到最接近的整数。
运算符 / 用于在数字和整数(浮点数或双精度数)之间进行除法,不要忘记 Decimal 类型。

问候。

not a bug, but simply the result is rounded to the nearest whole number.
The operator / is used to make a division between numbers and integers float or double, not forgetting also the Decimal type.

Regards.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文