Round instead of truncate if given too many decimals

The old behavior violates the Principle of Least Surprise in my opinion.
Perhaps it was done that way to account for float rounding issues that
should no longer apply if you use BigDecimal.