Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
これら 2 つの式の結果が異なるのはなぜですか? 同じことが gcc と python でも起こります。ここで何が起こっているのですか?それを防ぐ方法はありますか?
浮動小数点数の精度には制限があります。小さい数(3)を大きい数(1e20)に追加すると、結果は多くの場合、大きい数と同じになります。それがここに当てはまります。
(3 + 1e20) - 1e20 = 1e20 - 1e20 = 0
の精度doubleはおよそ10進数の15桁で、floatsの精度は約7桁です。
double
float