class BigDecimal

def as_json(options = nil) #:nodoc:

:nodoc:
override this behavior.
Use ActiveSupport.encode_big_decimal_as_string = true to

real value.
BigDecimal, it still has the chance to post-process the string and get the
if the other end knows by contract that the data is supposed to be a
That's why a JSON string is returned. The JSON literal is not numeric, but

other than manually inspecting the string with the JSON code itself.
those libraries would get in general a wrong number and no way to recover
however, parse non-integer JSON numbers directly as floats. Clients using
A BigDecimal would be naturally represented as a JSON number. Most libraries,
def as_json(options = nil) #:nodoc:
  if finite?
    ActiveSupport.encode_big_decimal_as_string ? to_s : self
  else
    nil
  end
end

def duplicable?

def duplicable?
  true
end

def encode_with(coder)

def encode_with(coder)
  string = to_s
  coder.represent_scalar(nil, YAML_MAPPING[string] || string)
end

def to_d

def to_d
  self
end

def to_formatted_s(*args)

def to_formatted_s(*args)
  if args[0].is_a?(Symbol)
    super
  else
    format = args[0] || DEFAULT_STRING_FORMAT
    _original_to_s(format)
  end
end