0

我写了非常简单的代码:

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+41a 等于 Math.Cos 的参数: 屏幕

我想,这是一个错误,Gtk#并决定测试返回由 .NET Framework 编译的代码的值,它返回相同的值!那么函数 cos(x) 的含义是否超出了段 from -1to的限制1?怎么可能?

4

2 回答 2

3

文档中:

d 的可接受值范围从大约 -9223372036854775295 到大约 9223372036854775295。对于此范围之外的值,Cos 方法将返回 d 不变,而不是引发异常。

于 2013-01-11T03:51:30.553 回答
-1

您可以分解表达式以获取如下值

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

在文档限制范围内尽可能分解

于 2013-01-11T04:22:21.463 回答