gpt4 book ai didi

c# - 嵌套的 Math.Pow(...) 行为怪异

转载 作者:太空狗 更新时间:2023-10-30 00:55:02 26 4
gpt4 key购买 nike

目前我正在将一些旧的 C++ 代码重写为 C#。在运行一些测试时,它没有正常工作,我开始调试,发现下面的内容我似乎无法理解。

因为我在类里面做了大量的数学并且经常使用 Math.Pow 函数,所以我为它创建了一个快捷方法:

public double pow(double d, double p)
{
return Math.Pow(d,p);
}

然后我有一行代码如下,它多次使用这种方法:

double y = pow((pow(d12, 2) + pow(d13, 2) + pow(23, 2)), 2) - (2.0 * (pow(d12, 4) + pow(d13, 4) + pow(d23, 4)));

这一行没有给出预期的结果,所以我开始将它分成更小的部分,因为它应该被计算......例如,减号之前的值应该等于 q5:

double q1 = pow(d12, 2);
double q2 = pow(d13, 2);
double q3 = pow(d23, 2);
double q4 = q1 + q2 + q3;
double q5 = pow(q4, 2);

在这些行之后 q5 是 8775553070736.0

然后我尝试将长行分成两部分,其中第一部分应该等于上面的 5 行,就写成一行:

double q12 = pow((pow(d12, 2) + pow(d13, 2) + pow(23, 2)), 2);

我希望它的计算结果与 q5 相同,但事实并非如此。 q12 的计算结果为 4479508755225.0

代码有什么问题?

最佳答案

你为什么期望:

pow(d23, 2)

相同
pow(23, 2)

?

提示:在 VS 中,始终将数字的默认颜色(黑色)更改为其他颜色(我喜欢红色)。

关于c# - 嵌套的 Math.Pow(...) 行为怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849439/

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