0

ここに簡単な解決策があるように感じますが、見つけられないようです。私は定数リテラル0.05を持っています。プログラムの実行中に、二重定数が 0.05 ではなく 0.049999 などとして扱われていることがわかりました。

なぜこれが起こっているのですか、どうすればそれを防ぐことができますか?

よろしくお願いします。

-マット

PS - より多くの情報を提供するためにスナップショットを投稿しますが、どうやら私は新しいユーザーなので投稿できません... Rats。

4

1 に答える 1

1

1/20 は 2 の累乗ではないため、0.05 のバイナリ表現はありません。浮動小数点 (倍精度) 表現は近似値のみです。一方、0.5 は正確に表すことができます。

v がリテラルの場合、 (v == 0.05) は「true」である必要があります

于 2012-04-17T04:53:07.097 に答える