Cygwinとmacの計算結果の違い 一旦解決

為替の予測プログラムの計算結果が
Cygwinとmacで違ってしまっていたので
しばらく悩んでいました

開発はmacでやりたいけれど
FXの発注はWindowsの方が便利なので
プログラムの実行をCygwinでやっていたんです

どうやらCygwinの計算結果がmacで実装した時と違っているのに気づいたのがお盆あたり

配列で組んでいたのを、vectorやmapで実装しなおした時期にあたります
ついでにfloat演算だったのをdoubleに書きなおしたり
思い当たる変更箇所がたくさんありすぎて特定に時間がかかりました

  • 初期化されないクラスやメンバ変数
  • 演算の丸め

特に、printfの浮動小数点型の丸め表示がCygwinとmacで違うために
かなり惑わされました…

実際に為替の予測結果に影響していたのは、
実数を割り算して整数に丸めるところでした

切り捨てしたいなら、floorを使わないと、結果が違ってしまうようです

macの中では、差はないのですが、Cygwinでは動作が違うんですね

以下、実際のコード

他に、初期化されていない変数がどこかにあるようなのだけれど
macでvalgrindをかけても見つからず

徹底的に初期化を追加したものの解決しないので
使用前に無駄な代入文をいれて回避しました

これは今後の課題

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です