Feature #12161
closed
Friendly BigDecimal#inspect
Added by printercu (Max Melentiev) almost 9 years ago.
Updated almost 8 years ago.
Description
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.
- Status changed from Open to Assigned
- Assignee set to mrkn (Kenta Murata)
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 #==
or#eql?
do matter, both are overriden and neither relies on #object_id
.
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.
- Status changed from Assigned to Closed
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?
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0