Having arbitrary precision helps in all the cases where you start with something given as an exact decimal, and perform only operations which produce exact decimal outputs from exact decimal inputs, which isn't a particularly small set of use cases. Scheme's approach of using exact representations unless either an inexact one is explicitly requested or an operation is used which produces a result which has no exact representation is correct in the broadest number of cases at the expense if requiring a tiny bit of extra effort to exchange accuracy for efficiency where that is desired.
This is, IMO, clearly the best approach for a general purpose language, and far superior to the large number of languages which lack even a convenient syntax for exact decimal literals.
I totally agree. Unless we decide to leave the field of rational numbers (with exponents, trigonometrics or nth roots), there's little reason not to keep the exact rational number around.
Fortunately Haskell does this too with Data.Ratio!
This is, IMO, clearly the best approach for a general purpose language, and far superior to the large number of languages which lack even a convenient syntax for exact decimal literals.