Actions
Bug #12718
closedBigDecimal() should raise on invalid input, consistent with Integer() and Float()
Description
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
BigDecimal("2.2") # => #<BigDecimal:7fb9ab1a9d40,'0.22E1',18(18)>
BigDecimal("invalid") # => #<BigDecimal:7fb9ab1b28c8,'0.0',9(9)>
I think BigDecimal("invalid")
should raise rather than returning a BigDecimal
representing 0
, to be consistent with Integer()
and 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
that returns 0
rather than raising on bad input, you have String#to_d in bigdecimal/util
. That's consistent with String#to_f
and #to_i
as well. But there is currently no way to do a conversion that raises, BigDecimal()
is inconsistent with Float()
and Integer()
Actions
Like0
Like0Like0Like0Like0