Skip to content

Commit 98450fd

Browse files
wmoxamlifo
wmoxam
authored andcommitted
Fix number_to_precision rounding error [rails#2071 state:resolved]
Signed-off-by: Pratik Naik <[email protected]>
1 parent 43b406b commit 98450fd

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

actionpack/lib/action_view/helpers/number_helper.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ def number_with_precision(number, *args)
215215
delimiter ||= (options[:delimiter] || defaults[:delimiter])
216216

217217
begin
218-
rounded_number = (Float(number) * (10 ** precision)).round.to_f / 10 ** precision
218+
rounded_number = BigDecimal.new((Float(number) * (10 ** precision)).to_s).round.to_f / 10 ** precision
219219
number_with_delimiter("%01.#{precision}f" % rounded_number,
220220
:separator => separator,
221221
:delimiter => delimiter)

actionpack/test/template/number_helper_test.rb

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ def test_number_with_precision
8888
assert_equal("111.00", number_with_precision(111, :precision => 2))
8989
assert_equal("111.235", number_with_precision("111.2346"))
9090
assert_equal("31.83", number_with_precision("31.825", :precision => 2))
91+
assert_equal("3268", number_with_precision((32.675 * 100.00), :precision => 0))
9192
assert_equal("112", number_with_precision(111.50, :precision => 0))
9293
assert_equal("1234567892", number_with_precision(1234567891.50, :precision => 0))
9394

0 commit comments

Comments
 (0)