Improve `toDecimal()` to support numbers or strings that are decimals