プロが教える店舗&オフィスのセキュリティ対策術

Go言語でプログラミングしていたのですが挙動がおかしいのでチェックしてみたところ、math.Cos(x)の引数xの値が大きくなると変な結果になることがわかりました。
具体的には、
  math.Cos(1.0E10) = 0.873119 ---- これは多分問題ないのでしょう
math.Cos(1.0E18) = -75.466665 ---- 理解できない結果
引数の値をさらに大きくするとさらに大きな値になります。
これは私のやり方に何か間違いがあるのでしょうか。(Visual C#で作ったプログラムをGo言語に移植している過程でこの現象に出くわしました)

A 回答 (1件)

使い方は正しいですが,Go言語では前々からそのバグはあるみたいですね。


ちょっと前まではexpもダメだったみたいです。
どうしても大きい値を引数にして正しい値を出したいなら,
与えられた引数から2piを引けるだけ引く関数を自前で作って介した方が安全だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。DE積分(二重指数関数型数値積分)をやっているときにぶつかったのですが、関数で大きな値を引数にするときは今後注意してゆきます。

お礼日時:2018/03/11 09:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!