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+41これはMath.Cosの引数と同じです。 画面

これはバグだと思い、Gtk#.NET Frameworkによってコンパイルされたこのコードを返す値をテストすることにしました。同じ値を返しました!それで、関数cos(x)の意味はから-1までのセグメントの制限を超えています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 に答える