Class: BigDecimal

Inherits:
Object
  • Object
show all
Defined in:
lib/big_decimal_yaml_fix.rb

Instance Method Summary collapse

Instance Method Details

#to_yaml(opts = {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/big_decimal_yaml_fix.rb', line 8

def to_yaml( opts = {} )
  YAML::quick_emit( nil, opts ) do |out|
          # This emits the number without any scientific notation. 
          # I prefer it to using self.to_f.to_s, which would loose precision.
          #
          # Note that YAML allows that when reconsituting floats 
          # to native types, some precision may get lost. 
          # There is no full precision real YAML tag that I am aware of.
          str = self.to_s
          if str == "Infinity"
              str = ".Inf"
          elsif str == "-Infinity"
              str = "-.Inf"
          elsif str == "NaN"
              str = ".NaN"
          end
          out.scalar( "tag:yaml.org,2002:float", str, :plain )
      end
end