4 ms·
That's too pedantic. Floats are not exact real numbers because they cannot represent most reals exactly. There's no need to use a float operation to see this i
by ivanbakel 6y ago
That's too pedantic. Floats are not exact real numbers because they cannot represent most reals exactly.
There's no need to use a float operation to see this inexact behaviour - floats cannot even represent most reals that humans can write in a computer program. If you write `0.1` in your programming language of choice such that it gets treated as a float, the result is not, in any way, exactly 0.1.
- voxic11 6y agoBut the reals that they can represent are represented exactly. 0.5 + 0.5 = 1.
- recursive 6y agoIf that's your criteria, then neither are BigDecimals exact real numbers.
- ivanbakel 6y agoThat's certainly true. The rationals (of which BigDecimal cannot represent the whole space) are a 0-measure part of the reals. I would not claim that BigDecimal is an exact representation, which is a fact that should be clear to anyone that tries to calculate 2 * PI in arbitrary-precision finite decimals. Even not considering irrational numbers, BigDecimal cannot handle 1/3 + 1/3 + 1/3 = 1 correctly. It might be fair to claim that floats are more inexact - certainly moreso than Rational, but probably moreso than BigDecimal for the numbers that programmers tend to care about.
- wwright 6y agoI didn’t claim they are _any_ exact real number or that they are _exactly_ the same as the decimal literal they are conveyer from. I said they are exact, which they are. (And further, that they are binary and not decimal.)