Fixed #13810 -- Truncate numbers correctly when given number of decimal positions is zero. Thanks, milosu and Łukasz Rekucki.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16074 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jannis Leidel 2011-04-22 12:03:10 +00:00
parent 0e9692bc66
commit 01d0bf011e
2 changed files with 4 additions and 3 deletions

View File

@ -2,7 +2,7 @@ from django.conf import settings
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
def format(number, decimal_sep, decimal_pos, grouping=0, thousand_sep=''): def format(number, decimal_sep, decimal_pos=None, grouping=0, thousand_sep=''):
""" """
Gets a number (as a number or string), and returns it as a string, Gets a number (as a number or string), and returns it as a string,
using formats definied as arguments: using formats definied as arguments:
@ -29,11 +29,11 @@ def format(number, decimal_sep, decimal_pos, grouping=0, thousand_sep=''):
# decimal part # decimal part
if '.' in str_number: if '.' in str_number:
int_part, dec_part = str_number.split('.') int_part, dec_part = str_number.split('.')
if decimal_pos: if decimal_pos is not None:
dec_part = dec_part[:decimal_pos] dec_part = dec_part[:decimal_pos]
else: else:
int_part, dec_part = str_number, '' int_part, dec_part = str_number, ''
if decimal_pos: if decimal_pos is not None:
dec_part = dec_part + ('0' * (decimal_pos - len(dec_part))) dec_part = dec_part + ('0' * (decimal_pos - len(dec_part)))
if dec_part: dec_part = decimal_sep + dec_part if dec_part: dec_part = decimal_sep + dec_part
# grouping # grouping

View File

@ -171,6 +171,7 @@ class FormattingTests(TestCase):
settings.USE_THOUSAND_SEPARATOR = False settings.USE_THOUSAND_SEPARATOR = False
self.assertEqual(u'66666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=',')) self.assertEqual(u'66666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=','))
self.assertEqual(u'66666A6', nformat(self.n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B')) self.assertEqual(u'66666A6', nformat(self.n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B'))
self.assertEqual(u'66666', nformat(self.n, decimal_sep='X', decimal_pos=0, grouping=1, thousand_sep='Y'))
settings.USE_THOUSAND_SEPARATOR = True settings.USE_THOUSAND_SEPARATOR = True
self.assertEqual(u'66,666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=',')) self.assertEqual(u'66,666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=','))