Bug #12718
Updated by nobu (Nobuyoshi Nakada) over 8 years ago
```ruby Integer("2") # => 2 Integer("invalid") # raises ArgumentError: invalid value for Integer() Float("2.0") # => 2.0 Float("invalid") # raises ArgumentError: invalid value for Float() ``` BUT ```ruby BigDecimal("2.2") # => #<BigDecimal:7fb9ab1a9d40,'0.22E1',18(18)> BigDecimal("invalid") # => #<BigDecimal:7fb9ab1b28c8,'0.0',9(9)> ``` I think `BigDecimal("invalid")` BigDecimal("invalid") should raise rather than returning a `BigDecimal` BigDecimal representing `0`, to be consistent with `Integer()` Integer() and `Float()`, Float(), and to give you access to a string conversion that raises, which I don't think exists in stdlib at present. If you want conversion of a string to a `BigDecimal` BigDecimal that returns `0` 0 rather than raising on bad input, you have String#to_d in `bigdecimal/util`. That's consistent with `String#to_f` String#to_f and `#to_i` #to_i as well. But there is currently no way to do a conversion that raises, `BigDecimal()` BigDecimal() is inconsistent with `Float()` Float() and `Integer()` Integer()