0.5
は、2
の(負の)累乗であり、IEEE-754バイナリ浮動小数点フォーマットによって正確に表現できることを意味します。 signle精度では0'01111110'00000000000000000000000
です。0.5 * x + 0.5 * x == xというのはいつも真実だと言えますか?
の場合、y + y == x
の場合、最適化をオフにしたクイックテスト(-O0
)に基づいています。しかし、IEEE-754規格では常に保証されていますか?
私はn
は正の整数2
のパワー、及びm = 1.0/n
、y = m * x
ある場合、一般的には、一緒にn
回y
を追加するx
を生成しないことを知っています。しかし、それはn = 2
はいと思われる。
私は何か不足していますか?
[浮動小数点数学は壊れていますか?](https://stackoverflow.com/questions/588004/is-floating-point-math-broken) – mehulmpt
@mehulmptその質問は「0.2 + 0.1!= 0.3 "であり、これは2進浮動小数点フォーマットでは0.2と0.1が正確に表現できないので完全に明らかです。私はあなたがここの違いを理解していないと思う。 – plasmacel