From 500deece9ef511c59a8c6edc7fb8682b13c4cd7e Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Wed, 20 Aug 2014 16:10:37 +0200 Subject: Fixes the digits counter of AS's NumberToRoundedConverter Zero has one digit, but Math.log10(0) returns -Infinity. The method needs to special-case zero. The patch adds a regression test that is not clearly related to the underlying issue because digit_count is private and has no coverage. Gray area. This bug was uncovered by 60062cf. --- .../lib/active_support/number_helper/number_to_rounded_converter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb') diff --git a/activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb b/activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb index 01597b288a..47028e9ecf 100644 --- a/activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb +++ b/activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb @@ -59,7 +59,7 @@ module ActiveSupport end def digit_count(number) - (Math.log10(absolute_number(number)) + 1).floor + number.zero? ? 1 : (Math.log10(absolute_number(number)) + 1).floor end def strip_insignificant_zeros -- cgit v1.2.3 From 9bf2e5ec305bcb5aa7713fea66ac0fbfbad0612a Mon Sep 17 00:00:00 2001 From: Zachary Scott Date: Fri, 22 Aug 2014 18:27:30 -0700 Subject: Use zero-padding for number_to_rounded_converter --- .../lib/active_support/number_helper/number_to_rounded_converter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb') diff --git a/activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb b/activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb index 47028e9ecf..dcf9a567e8 100644 --- a/activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb +++ b/activesupport/lib/active_support/number_helper/number_to_rounded_converter.rb @@ -33,7 +33,7 @@ module ActiveSupport a, b = s.split('.', 2) a + '.' + b[0, precision] else - "%01.#{precision}f" % rounded_number + "%00.#{precision}f" % rounded_number end delimited_number = NumberToDelimitedConverter.convert(formatted_string, options) -- cgit v1.2.3