From: Armin Ronacher Date: Tue, 17 Jun 2008 21:17:44 +0000 (+0000) Subject: Fix scientific notation for 0. closes #99 X-Git-Tag: 1.0~321 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b17bcf748ebe63b557531b6663606dabaf3bfc03;p=thirdparty%2Fbabel.git Fix scientific notation for 0. closes #99 --- diff --git a/babel/numbers.py b/babel/numbers.py index 92b1fd3c..16efc60d 100644 --- a/babel/numbers.py +++ b/babel/numbers.py @@ -463,7 +463,10 @@ class NumberPattern(object): is_negative = int(value < 0) if self.exp_prec: # Scientific notation value = abs(value) - exp = int(math.floor(math.log(value, 10))) + if value: + exp = int(math.floor(math.log(value, 10))) + else: + exp = 0 # Minimum number of integer digits if self.int_prec[0] == self.int_prec[1]: exp -= self.int_prec[0] - 1 diff --git a/babel/tests/numbers.py b/babel/tests/numbers.py index ec294efb..5e43e960 100644 --- a/babel/tests/numbers.py +++ b/babel/tests/numbers.py @@ -138,6 +138,9 @@ class FormatDecimalTestCase(unittest.TestCase): fmt = numbers.format_scientific(Decimal('12345'), '#.##E+00 m/s', locale='en_US') self.assertEqual(fmt, '1.23E+04 m/s') + # 0 (see ticket #99) + fmt = numbers.format_scientific(0, '#E0', locale='en_US') + self.assertEqual(fmt, '0E0') def suite():