みなさま、お知恵をお貸しください。

私は、関数電卓を作っている者です。

文字列を構文解析し、現れたワードごとに演算を行うという簡単なプログラムです。

私は、ある問題に直面しました。

sin(n*M_PI)が0にならないのです。(nは整数です)
DBL_EPSILONを使った切り捨ては試しました。

しかしながら、nが大きくなると再び誤差が表示されてしまいます。
例 sin(1000000*M_PI)=誤差

この誤差はgoogle電卓でも現れました。
驚いたことに、市販の関数鵜電卓では、いっさいこの誤差が現れません。

C言語で、市販の関数電卓のように誤差をなくすにはどうしたらよいでしょうか?

詳しい方ご教授お願いします。