Fix number_to_precision rounding error [#2071 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
This commit is contained in:
parent
43b406bdb0
commit
98450fd168
@ -215,7 +215,7 @@ def number_with_precision(number, *args)
|
|||||||
delimiter ||= (options[:delimiter] || defaults[:delimiter])
|
delimiter ||= (options[:delimiter] || defaults[:delimiter])
|
||||||
|
|
||||||
begin
|
begin
|
||||||
rounded_number = (Float(number) * (10 ** precision)).round.to_f / 10 ** precision
|
rounded_number = BigDecimal.new((Float(number) * (10 ** precision)).to_s).round.to_f / 10 ** precision
|
||||||
number_with_delimiter("%01.#{precision}f" % rounded_number,
|
number_with_delimiter("%01.#{precision}f" % rounded_number,
|
||||||
:separator => separator,
|
:separator => separator,
|
||||||
:delimiter => delimiter)
|
:delimiter => delimiter)
|
||||||
|
@ -88,6 +88,7 @@ def test_number_with_precision
|
|||||||
assert_equal("111.00", number_with_precision(111, :precision => 2))
|
assert_equal("111.00", number_with_precision(111, :precision => 2))
|
||||||
assert_equal("111.235", number_with_precision("111.2346"))
|
assert_equal("111.235", number_with_precision("111.2346"))
|
||||||
assert_equal("31.83", number_with_precision("31.825", :precision => 2))
|
assert_equal("31.83", number_with_precision("31.825", :precision => 2))
|
||||||
|
assert_equal("3268", number_with_precision((32.675 * 100.00), :precision => 0))
|
||||||
assert_equal("112", number_with_precision(111.50, :precision => 0))
|
assert_equal("112", number_with_precision(111.50, :precision => 0))
|
||||||
assert_equal("1234567892", number_with_precision(1234567891.50, :precision => 0))
|
assert_equal("1234567892", number_with_precision(1234567891.50, :precision => 0))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user