今プロジェクトの課題でC言語でプログラムを組んでるんですが、ちょっとおかしな挙動を示していて困ってます。手元にデバッガがないのが痛いんですが、printfで出力してみると、
double value : 1.000000 int value : 0
実際こんなことってあるんでしょうか。普通にprintf("double value : %f\tint value %d\n",value,(int)value);ってやってるだけなんですが。このせいでプログラムの挙動がおかしいのは分かってるんですが、具体的な解決方法が思いつきません。さてどうしたらいいのやら。
さて、その後2時間くらい粘ったら原因が分かりました。%.20fとかってオプションをつけてみると、本当は微妙に数字が足りてないのが分かります。つまりprintfでは繰上げを行っていたんですね。
このあたりはAPIとかに書いておいてくれると非常にうれしい情報なのですが・・・。
コメントする