gpt4 book ai didi

C++ POW(X,Y) X negative double 和 Y negative double,给出 nan 作为结果

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:48 26 4
gpt4 key购买 nike

我正在尝试在我的 C++ 14 代码中执行一个简单的操作 pow(-0.89,-0.67),它给出了一个 NaN 作为结果。在 SciLab 中执行相同操作时,结果为 -1.08。在 C++ 中有什么方法可以得到正确的结果吗?

最佳答案

我猜你在 SciLab 中打错了字。你一定写过

-0.89 ^ -0.67

这意味着你做了 -(0.89 ^ -0.67) = -(1.08)。

如果您改为输入

(-0.89) ^ -0.67

您会得到答案 -0.5504 - 0.9306i。负数的负根很复杂,C++ 中的 pow 函数会给您一个 NaN 结果。

如果您使用 std::complex 类型,您将得到 -0.5504 - 0.9306i 的正确答案:

#include <iostream>
#include <complex>
#include <cmath>

int main()
{
std::complex<double> a(-0.89), b(-0.67);
std::cout << std::pow(a,b) << std::endl;
}

输出:

(-0.550379,-0.93064)

关于C++ POW(X,Y) X negative double 和 Y negative double,给出 nan 作为结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946605/

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