Of course not all real numbers (or even rationals) can be represented as finite binary fractions -- let alone onex that fit into 53 bits! But floating point numbers are numbers, not fuzz. Add 0.5 and 0.5 in floating point, and you'll get 1.0 exactly -- not 1.0 plus or minus a unit in the last place.
Why does this matter if you can't represent your original data exactly? Because in intermediate computations, we rely on certain relationships holding. This is important in geometric computation, for example, since we'd like a consistent view of the world. Three ordered points on the plane should be listed clockwise or counterclockwise, or be colinear -- but not more than one of those. See the papers on robust geometric predicates by Jonathan Shewchuk, or papers on floating point computation by W. Kahan for details.
Floating point arithmetic is not the same as real arithmetic -- but neither is it fuzzy. Well-behaved floating point, like that specified by the IEEE 754 standard, actually allows you to simulate higher precision. Doug Priest's thesis explains how such simulated high precision works in detail, and software packages by , Yozo Hida, and others let you use fast high-precision arithmetic from languages like C++ and Fortran.
The widely used 1 + epsilon model of arithmetic is useful for proving algorithms are accurate, but it is only a model. Some computations in floating point are exact; for instance, the difference of any two positive floating point numbers that are within a factor of two of each other is computed exactly -- see Doug Priest's appendix on computer arithmetic in P&H.
Of course not all real numbers (or even rationals) can be represented as finite binary fractions -- let alone onex that fit into 53 bits! But floating point numbers are numbers, not fuzz. Add 0.5 and 0.5 in floating point, and you'll get 1.0 exactly -- not 1.0 plus or minus a unit in the last place.
Why does this matter if you can't represent your original data exactly? Because in intermediate computations, we rely on certain relationships holding. This is important in geometric computation, for example, since we'd like a consistent view of the world. Three ordered points on the plane should be listed clockwise or counterclockwise, or be colinear -- but not more than one of those. See the papers on robust geometric predicates by Jonathan Shewchuk, or papers on floating point computation by W. Kahan for details.
Floating point arithmetic is not the same as real arithmetic -- but neither is it fuzzy. Well-behaved floating point, like that specified by the IEEE 754 standard, actually allows you to simulate higher precision. Doug Priest's thesis explains how such simulated high precision works in detail, and software packages by , Yozo Hida, and others let you use fast high-precision arithmetic from languages like C++ and Fortran.
The widely used 1 + epsilon model of arithmetic is useful for proving algorithms are accurate, but it is only a model. Some computations in floating point are exact; for instance, the difference of any two positive floating point numbers that are within a factor of two of each other is computed exactly -- see Doug Priest's appendix on computer arithmetic in P&H.