If you're dealing with money, for example, you'll want to use fixed-point, not any kind of floating point. Floating point expands its range by effectively representing numbers uniformly across the log space. If you need to deal with calculations that contain both 1e-12 and 1e12, you really want that logarithmic property. But money has a fixed scale: you don't need to represent any numbers between 0 and 0.01¢ (fractional cents are useful, but I think 1/100 is the smallest you'd need). A 64-bit binary floating number at that scale can only precisely store every number up to a tad over $900 billion, and even decimal floating point can only scooch that up to a tad under $1 trillion. A 64-bit integer in fixed point could handle $1.8 quadrillion precisely.
Decimal floating point doesn't fix rounding errors. It fixes superficial rounding error in that 0.1 is a terminating decimal in base 10 but not in base 2, but that's not really a problem that happens. It doesn't fix the fact that subtraction and division have the potential to destroy significant digits, and it doesn't fix the inability to accurately mix large and small numbers--both of which cause many more problems in practice, particularly when you try to do things like invert a matrix.
And all is well – until you learn about e and pi and realize, that your arbitrary precision rational numbers are no better than floating-point.
Well, there are two separate issues here:
1) The default for programming should be decimal floating point instead of binary floating point. Suddenly, your strange "a == b" for floating point works just fine because 0.1 is exactly representable. Thus, addition, subtraction, and multiplication behave just like integer. Computers are now fast enough that any language in which you don't actually specify a floating point, should default to decimal. This covers 99% of the silly cases for beginners, and benefits people doing actual monetary calculations.
2) Programmers need to be able to specify when they want binary floating point for speed along with all the weirdness.