gpt4 book ai didi

C# - 无限数

转载 作者:行者123 更新时间:2023-11-30 20:16:02 24 4
gpt4 key购买 nike

我目前正在开发某个程序(在 C# .NET - winforms 中),其中我遇到了以下问题:

鉴于以下情况,我需要计算点 (t, f(t)):

f(t) = [Sin(t)/16*Cos^4(t)]^(1/3),这样:t:-89.995 -> 89.995。 (t 是实数)。

注意:t的取值范围是-89.995到89.995。

我使用.NET函数Math.Sin()、Math.Cos()、Math.Pow()进行计算,从弧度到度的转换是正确的。

问题是对于我放入 f(t) 的每个 t < 0,我从上述函数中得到 NaN(= 不是数字),当我在标准计算器中计算它时,我得到标准的正确值。

例如:t = -0.9165664,f(t) = -0.1000096,(这是正确的结果)。但是当我在我的程序中使用 .NET 函数时,我得到的 t = -0.9165664 的结果是 NaN(= 不是数字),为什么?这不是一个异常(exception),不是除以零或类似的东西。

我在程序中使用的代码:

float t = -0.9165664;
float numerator = Math.Sin(t * Math.PI / 180.0f);
float denominator = 16.0f * Math.Pow(Math.Cos(t * Math.PI / 180.0f), 4)
float ft = (float)Math.Pow(numerator / denominator, 1.0f / 3.0f));

注意:我无法将 ft 的类型更改为 double。

当我在上面的代码中输入任何 t > 0 时,它会给出正确的结果。

有人可以向我解释哪里出了问题或建议可能的解决方案吗?

感谢帮助!!!

最佳答案

问题是 Math.Pow 函数的定义,参见 the documentation .由于您的指数是固定的,并且您正在寻找实数的第三根,请尝试类似的方法

float t = -0.9165664;
float numerator = Math.Sin(t * Math.PI / 180.0f);
float denominator = 16.0f * Math.Pow(Math.Cos(t * Math.PI / 180.0f), 4)
float val = numerator / denominator;
float ft = Math.Sign(val) * (float)Math.Pow(Math.Abs(val), 1.0f / 3.0f));

关于C# - 无限数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51250265/

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