Can BigDecimal's #inspect be more human-friendly? Even just
#<BigDecimal:b7ea1130,1234.5678,8(12)> instead of
#<BigDecimal:b7ea1130,'0.12345678E4',8(12)> will be much easy to read. But I think the best option is
1234.5678(#<BigDecimal:b7ea1130,8(12)>) or something alike, which focuses on its numeric nature.
I've never used bigdecimal's address and number of significant digits. Maybe if this is rarely used information it can be avoided in #inspect at all.
With such formatting It'll be easier to recognise values in repl, debugger, and especially in test's output/failures.
Updated by skalee (Sebastian Skalacki) almost 5 years ago
I agree that
BigDecimal output is horrible.
First of all, I see no point in displaying the object's address. One rarely compares two BigDecimals by their identity. Typically
#eql? do matter, both are overriden and neither relies on
Although exponential form is very useful for comparing numbers by their orders of magnitude,
Fixnum#inspect often uses decimal format:
1e10.inspect # => "10000000000.0" 1e20.inspect # => "1.0e+20"
On the other hand, the BigDecimal's exponent and the number of significant digits seem to be quite important because hash equality relies on them. I'm not sure if it's sufficient reason to include them in
#inspect output though.
Updated by printercu (Max Melentiev) about 4 years ago
I see comment says
* BigDecimal.new("1234.5678").inspect * #=> "0.12345678e4"
It's better than before. But still uses floating-point notation, while even Float itself is inspected as usual decimal number. Is there any intention to improve it in future?