Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #11409: number_with_precision_fix.diff

File number_with_precision_fix.diff, 1.4 kB (added by zhangyuanyi, 2 years ago)

Fix of number_with_precision and number_to_currency

  • actionpack/test/template/number_helper_test.rb

    old new  
    5656 
    5757  def test_number_with_precision 
    5858    assert_equal("111.235", number_with_precision(111.2346)) 
     59    assert_equal("31.83", number_with_precision(31.825, 2))     
    5960    assert_equal("111.23", number_with_precision(111.2346, 2)) 
    6061    assert_equal("111.00", number_with_precision(111, 2)) 
    6162    assert_equal("111.235", number_with_precision("111.2346")) 
     63    assert_equal("31.83", number_with_precision("31.825", 2)) 
    6264    assert_equal("112", number_with_precision(111.50, 0)) 
    6365    assert_equal("1234567892", number_with_precision(1234567891.50, 0)) 
    6466 
  • actionpack/lib/action_view/helpers/number_helper.rb

    old new  
    148148      #  number_with_precision(13, 5)        # => 13.00000 
    149149      #  number_with_precision(389.32314, 0) # => 389 
    150150      def number_with_precision(number, precision=3) 
    151         "%01.#{precision}f" % number 
     151        "%01.#{precision}f" % ((Float(number) * (10 ** precision)).round.to_f / 10 ** precision) 
    152152      rescue 
    153153        number 
    154154      end