Math.cos( Math.PI / 2 ); Math.sin( Math.PI ); Math.tan( Math.PI );

上記は数学的には0のはずなのに、ationscriptでは0になりません。

EX:下記のコードを実行してみましょう。

trace("cos : "+Math.cos( Math.PI / 2 )+"\nsin: "+Math.sin( Math.PI )+"\ntan: "+Math.tan( Math.PI ));

//結果 cos : 6.12303176911189e-017 sin: 1.22460635382238e-016 tan: -1.22460635382238e-016

Math.cos(),sin(),tan()などは、角度*Math.PI / 180でラジアンを算出し、ベクトルの計算をする時なんかによく使用しますよね。

この現象に対して、psyark.jp、keyさんが実験しています。
三角関数の誤差疑惑

原因は計算誤差でした。さもあろう。 trace((Math.PI * 4.5) % Math.PI == Math.PI / 2); // true trace((Math.PI * 5.5) % Math.PI == Math.PI / 2); // false

三角関数に限らず、浮動小数点数と一点の整数とを比べるのは危険なようです。

if(Math.cos(radian)==0)とかは怖くてできないですね…

HTML5飯