在 Visual Basic 中除两位小数时如何使用反斜杠返回整数部分

问题描述 投票:0回答:1

我正在尝试除两位小数,并且希望仅使用 .考虑以下示例:

        Dim a, b As Integer
        a = 200
        b = 2

        Writeline(Math.Log(a) / Math.Log(b))
        Writeline(Math.Log(a) \ Math.Log(b))

(Math.Log(a) / Math.Log(b)
上,我得到 7.64385619,我本来希望用 Math.Log(a) \ Math.Log(b) 得到
7
,但结果却返回 5。 我应该怎么做才能返回 7 而不是 5?我怎么才能得到5呢?当处理整数时,它工作得很好。我尝试在互联网上查找但无法找到解决方案。可能是我的搜索短语。

vb.net operators integer-division
1个回答
0
投票

这是一个完美的例子,说明了为什么您应该始终阅读相关文档。 Here 是整数除法运算符的文档。它是这么说的:

在执行除法之前,Visual Basic 会尝试将任何浮点数值表达式转换为 Long。如果 Option Strict 设置为 On,则会发生编译器错误。如果 Option Strict 为 Off,则当值超出长数据类型的范围时,可能会出现 OverflowException。转换为多头还需经过银行四舍五入。

你显然有

Option Strict Off
,否则你的代码甚至无法编译。从一开始这就是一件坏事。对于您的情况,如果使用
Option Strict Off
,则
5.2983173665480363
0.69314718055994529
分别四舍五入为
5
1
5 \ 1
是 5,这就是您看到的结果。

© www.soinside.com 2019 - 2024. All rights reserved.