Class: BigDecimal

Inherits:
Object show all
Includes:
ActiveSupport::BigDecimalWithDefaultFormat, ActiveSupport::NumericWithFormat
Defined in:
lib/active_support/core_ext/object/json.rb,
lib/active_support/core_ext/object/duplicable.rb

Instance Method Summary collapse

Methods included from ActiveSupport::BigDecimalWithDefaultFormat

#to_s

Methods included from ActiveSupport::NumericWithFormat

#to_s

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(options = 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)>

Returns:

  • (Boolean)


113
114
115
# File 'lib/active_support/core_ext/object/duplicable.rb', line 113

def duplicable?
  true
end