1

これら 2 つの式の結果が異なるのはなぜですか?
同じことが gcc と python でも起こります。ここで何が起こっているのですか?それを防ぐ方法はありますか?

ここに画像の説明を入力

ここに画像の説明を入力

4

2 に答える 2

6

浮動小数点数の精度には制限があります。小さい数(3)を大きい数(1e20)に追加すると、結果は多くの場合、大きい数と同じになります。それがここに当てはまります。

(3 + 1e20) - 1e20 = 1e20 - 1e20 = 0

の精度doubleはおよそ10進数の15桁で、floatsの精度は約7桁です。

于 2012-07-16T15:33:17.173 に答える
3
于 2012-07-16T15:42:28.200 に答える