カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2018年02月16日(金)

c、c++ 浮動小数点の計算に注意

写真閲覧ソフトのミルノ PC フォトフレーム
の新機能の実装がだいたい終わったので、テスト中です。

写真をミルノに!

で覚えてね。キラーン。

今日、直した不具合で次のようなものがありました。

double speed = speedPerSec / refreshRate;

speeedPerSec と refreshRate は DWORD 型です。
わりと、やりがちですが、
初心者だと、はまる可能性ありです。

上の式は一見 speedPerSec が 1
refreshRate が 2 だと、
speed に 0.5 が入りそうですが、
結果は 0 です !

何故 0 になるかというと、
speeedPerSec と refreshRate は DWORD 型なので、
DWORD 型の割り算が行われた後で、
double 型に変換される仕様だからです。

もちろんプログラミング言語の仕様によっては、
0.5 になる場合もありますが、c、c++ では、0 です。

こういうのは、プログラムの式を
数学の式と同じように考えていると
気付かないので注意が必要です。

修正するには、

double speed = speedPerSec;
speed /= refreshRate;

とか、

double speed = (double)speedPerSec / refreshRate;

のようにします。

日本語の最新版はこちらのページから、ダウンロードできます
You can download the latest version of Miruno PC Photoframe here.

x64 の最新版はこちらのページから、ダウンロードできます
Download the latest version of Miruno PC Photoframe x64 here.

・・・

月額会員専用のx64 版 もあります。
月額会員には、こちらのページから参加できます

経験をつむと、間違いの頻度もおちるし、
間違いにもすぐ気付くようになりますが、
間違わないようにはなりませんなぁ。残念!

ミルノ PC フォトフレーム
ミルノ PC フォトフレームのダウンロード
ミルノ PC フォトフレームの更新履歴
ご意見・ご要望連絡窓口


コメント
コメントする