Math.Cos(x)< -1,x值大

时间:2013-01-11 03:47:31

标签: c# monodevelop

我编写了非常简单的代码:

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的参数: screen

我想,这是Gtk#的错误,并决定测试返回.NET Framework编译的代码的值,它返回相同的值! 这是因为函数cos(x)的含义超出了从-11的段的限制吗?怎么可能?

2 个答案:

答案 0 :(得分:3)

来自documentation

  

d的可接受值范围从大约-9223372036854775295到大约9223372036854775295.对于超出此范围的值,Cos方法返回d而不是抛出异常。

答案 1 :(得分:-1)

您可以细分表达式以获取类似

的值

成本(A + B)= CosA * CosB -SinA * SinB

在文档限制内尽可能低的分解