代码之家  ›  专栏  ›  技术社区  ›  Andy

Ruby数学运算的精度问题

  •  1
  • Andy  · 技术社区  · 14 年前

    你知道如何用数学精度来解决以下问题吗?

    p RUBY_VERSION # => "1.9.1"
    p 0.1%1 # => 0.1
    p 1.1%1 # => 0.1
    p 90.0%1 # => 0.0
    p 90.1%1 # => 0.0999999999999943
    p 900.1%1 # => 0.100000000000023
    
    p RUBY_VERSION # => "1.9.2"
    p 0.1%1 # => 0.1
    p 1.1%1 # => 0.10000000000000009
    p 90.0%1 # => 0.0
    p 90.1%1 # => 0.09999999999999432
    p 900.1%1 # => 0.10000000000002274
    
    3 回复  |  直到 14 年前
        1
  •  5
  •   mikej heading_to_tahiti    14 年前


    man


    BigDecimal


    >> x = BigDecimal.new('900.1')
    => #<BigDecimal:101113be8,'0.9001E3',8(8)>
    >> x % 1
    => #<BigDecimal:10110b498,'0.1E0',4(16)>
    >> y = x % 1
    => #<BigDecimal:101104760,'0.1E0',4(16)>
    >> y.to_s
    => "0.1E0"
    >> y.to_f
    => 0.1
    


        3
  •  1
  •   xtofl Adam Rosenfield    14 年前