# HG changeset patch # User aronacher # Date 1213737464 0 # Node ID ce1f9919f8c9bec6e1db342e830ae516f493a710 # Parent 4cdca48fc83227cd199d30e2db3ea8286fc9858a Fix scientific notation for 0. closes #99 diff --git a/babel/numbers.py b/babel/numbers.py --- a/babel/numbers.py +++ b/babel/numbers.py @@ -463,7 +463,10 @@ 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 --- a/babel/tests/numbers.py +++ b/babel/tests/numbers.py @@ -138,6 +138,9 @@ 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():