gpt4 book ai didi

.net - VB.NET 中的奇怪 -1.#IND 错误

转载 作者:行者123 更新时间:2023-12-04 18:09:22 26 4
gpt4 key购买 nike

这是 VB.NET 中的一个奇怪的计算错误。我已将我的问题简化为以下内容。我可以写:

Console.WriteLine(-0.78125 ^ 2.5)

并获得 -0.53947966093944366 .

但是如果我把它改成 Console.WriteLine((-0.78125 + 0) ^ 2.5) , 我得到 -1.#IND .

或者,如果它尝试:
Dim D as Double = -0.78125
Console.WriteLine(D ^ 2.5)

我也收到 -1.#IND .

如果我在表达式中使用单个文字数字,我只能让计算返回结果,但是当我使用任何数据类型的变量时,我得到 -1.#IND .

我读过解释“-1.#IND”的其他帖子,但它们表明表达式中的一个数字是 NaN ,这里不是这种情况。为什么会这样?

最佳答案

您可以通过尝试以下操作来弄清楚发生了什么:

Console.WriteLine(-1 ^ 0.5)

它打印 -1 ,但实际上和 sqrt(-1) 是一样的它没有实数结果。这很奇怪,不是吗?那么这里发生了什么?
^具有比 - 更高的优先级,所以 -1 ^ 0.5实际上是 -(1 ^ 0.5) .这就是为什么它会打印 -1 .

您可以在此处查看优先级列表: Operator Precedence in Visual Basic

您的代码也会发生同样的情况。 -0.78125 ^ 2.5实际上解释为 -(0.78125 ^ 2.5)这是有效的,但如果你这样做 (-0.78125 + 0) ^ 2.5 (甚至 (-0.78125) ^ 2.5 )它不再有效,因为它需要从负值计算平方根。这就是为什么您会收到 NaN (或 -1#IND)。

关于.net - VB.NET 中的奇怪 -1.#IND 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18688307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com