Class: BigDecimal
- Defined in:
- lib/active_support/core_ext/object/json.rb,
lib/active_support/core_ext/object/duplicable.rb
Instance Method Summary collapse
-
#as_json(options = nil) ⇒ Object
A BigDecimal would be naturally represented as a JSON number.
-
#duplicable? ⇒ Boolean
BigDecimals are duplicable:.
Methods included from ActiveSupport::BigDecimalWithDefaultFormat
Methods included from ActiveSupport::NumericWithFormat
Instance Method Details
#as_json(options = nil) ⇒ Object
A BigDecimal would be naturally represented as a JSON number. Most libraries, however, parse non-integer JSON numbers directly as floats. Clients using those libraries would get in general a wrong number and no way to recover other than manually inspecting the string with the JSON code itself.
That’s why a JSON string is returned. The JSON literal is not numeric, but if the other end knows by contract that the data is supposed to be a BigDecimal, it still has the chance to post-process the string and get the real value.
121 122 123 |
# File 'lib/active_support/core_ext/object/json.rb', line 121 def as_json( = nil) #:nodoc: finite? ? to_s : nil end |
#duplicable? ⇒ Boolean
BigDecimals are duplicable:
BigDecimal("1.2").duplicable? # => true
BigDecimal("1.2").dup # => #<BigDecimal:...,'0.12E1',18(18)>
113 114 115 |
# File 'lib/active_support/core_ext/object/duplicable.rb', line 113 def duplicable? true end |