我正在尝试除两位小数,并且希望仅使用 .考虑以下示例:
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呢?当处理整数时,它工作得很好。我尝试在互联网上查找但无法找到解决方案。可能是我的搜索短语。
这是一个完美的例子,说明了为什么您应该始终阅读相关文档。 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,这就是您看到的结果。