我编写了非常简单的代码:
public static void Main (string[] args)
{
String str="1,0992748756871115E+41"; //yes, I know that is very large value
Double x=Convert.ToDouble(str);
Double res=Math.Cos(x);
Double resRound=Math.Round(res);
Console.WriteLine("x={0}\nres={1}\nresRound={2}", x, res, resRound);
}
此代码输出非常大的res值:1,09927487568711E+41
,其等于Math.Cos的参数:
我想,这是Gtk#
的错误,并决定测试返回.NET Framework编译的代码的值,它返回相同的值!
这是因为函数cos(x)的含义超出了从-1
到1
的段的限制吗?怎么可能?
答案 0 :(得分:3)
d的可接受值范围从大约-9223372036854775295到大约9223372036854775295.对于超出此范围的值,Cos方法返回d而不是抛出异常。
答案 1 :(得分:-1)
您可以细分表达式以获取类似
的值成本(A + B)= CosA * CosB -SinA * SinB
在文档限制内尽可能低的分解