OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Math.sin()メソッドについて

  • すぐに回答を!
  • 質問No.177565
  • 閲覧数237
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 54% (50/91)

Math.sin(Math.PI)の帰り値が0になってくれません。どなたかわかる人
原因も沿えて教えてください。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル13

ベストアンサー率 24% (357/1463)

Math.PI の仕様は次のようになっています。
The double value that is closer than any other to pi, the ratio of the circumference of a circle to its diameter.
πに最も近い値ということですね。元々無理数ですから、64ビットの浮動小数点形式では、どうしても表わしきれないわけです。
一方Math.sin()の方はコンピュータのネイティブコードを呼び出すことになっています。したがって、この値はライブラリ関数の
実装に依存することになりますが、上記の数値精度および演算誤差から、どうしても数値精度程度の誤差は生じてしまいます。
コンピュータというものはそういうものだと割り切って考えるしかないのかもしれません。
これぞという解決法にはお目にかかったことが無いように思います。一般的には、数値にある程度の許容量を設け、その中に入って
いれば同等に扱うというようなやり方をしているように思います。例えば、問題のケースであれば、値が±1E-10の間にあればゼロと
みなすというようなやり方です。
その精度では満足できないということであれば、もっと桁数の多い新たな数値型のクラスを定義するしかないと思います。
お礼コメント
pecopeco21

お礼率 54% (50/91)

ありがとうございます。やはり解決法はなかったのですね。
投稿日時 - 2001-12-03 15:52:33
-PR-
-PR-
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ