提交 f0dbd22c 编写于 作者: M Michael Koziarski

Allow Float#round to take a precision argument. Closes #8626 [norbert]


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7401 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 21837821
require File.dirname(__FILE__) + '/float/rounding'
class Float #:nodoc:
include ActiveSupport::CoreExtensions::Float::Rounding
end
module ActiveSupport #:nodoc:
module CoreExtensions #:nodoc:
module Float #:nodoc:
module Rounding
def self.included(base) #:nodoc:
base.send(:alias_method, :round_without_precision, :round)
base.send(:alias_method, :round, :round_with_precision)
end
# Rounds the float with the specified precision.
#
# x = 1.337
# x.round # => 1
# x.round(1) # => 1.3
# x.round(2) # => 1.34
def round_with_precision(precision = nil)
precision.nil? ? round_without_precision : (self * (10 ** precision)).round / (10 ** precision).to_f
end
end
end
end
end
require File.dirname(__FILE__) + '/../abstract_unit'
class FloatExtRoundingTests < Test::Unit::TestCase
def test_round_for_positive_number
assert_equal 1, 1.4.round
assert_equal 2, 1.6.round
assert_equal 2, 1.6.round(0)
assert_equal 1.4, 1.4.round(1)
assert_equal 1.4, 1.4.round(3)
assert_equal 1.5, 1.45.round(1)
assert_equal 1.45, 1.445.round(2)
end
def test_round_for_negative_number
assert_equal( -1, -1.4.round )
assert_equal( -2, -1.6.round )
assert_equal( -1.4, -1.4.round(1) )
assert_equal( -1.5, -1.45.round(1) )
end
def test_round_with_negative_precision
assert_equal 123460.0, 123456.0.round(-1)
assert_equal 123500.0, 123456.0.round(-2)
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册