4 ms·
I believe IEEE754 floats have that subtraction/addition guarantee (as long as the hardware doesn't map subnormals to zero). The problem in this case is the inp
by dbaupp 8y ago
I believe IEEE754 floats have that subtraction/addition guarantee (as long as the hardware doesn't map subnormals to zero). The problem in this case is the input numbers are rounded when they are converted from text/decimal to a float, and so aren't exact.
- int_19h 8y ago> I believe IEEE754 floats have that subtraction/addition guarantee (as long as the hardware doesn't map subnormals to zero). They don't - all 11 bits of the exponent (for float64) are in use, so you can have something like 1e300, and then you can't e.g. add 1 to it and get a different number. >>> x = 1e100 >>> x 1e+100 >>> y = x + 1 >>> y 1e+100 >>> x - y 0.0
- dbaupp 8y agoThat's something else: x == y, so the difference must be 0. What you said above is if x != y, x - y != 0 which holds for all x and y, but is different to if dx != 0, x + dx != x which fails for some (many!) x and dx.