Ticket #3004: floatformat.patch
File floatformat.patch, 2.5 KB (added by , 18 years ago) |
---|
-
django/template/defaultfilters.py
27 27 from django.utils.html import fix_ampersands 28 28 return fix_ampersands(value) 29 29 30 def floatformat(text ):30 def floatformat(text, precision=1): 31 31 """ 32 Displays a floating point number as 34.2 (with one decimal place) -- but33 only if there's a point to be displayed32 Rounds a floating point number to the number of decimal places given in the 33 argument, with trailing zeroes and periods stripped. 34 34 """ 35 35 try: 36 36 f = float(text) 37 37 except ValueError: 38 38 return '' 39 m = f - int(f) 40 if m: 41 return '%.1f' % f 39 if precision == 0: 40 return '%d' % round(f) 42 41 else: 43 return '%d' % int(f)42 return re.sub(r'\.?0+$', '', ('%%.%sf' % precision) % f) 44 43 45 44 def linenumbers(value): 46 45 "Displays text with line numbers" -
docs/templates.txt
924 924 floatformat 925 925 ~~~~~~~~~~~ 926 926 927 Rounds a floating-point number to one decimal place -- but only if there's a928 decimal part to be displayed. For example: 927 Rounds a floating-point number to the number of decimal places given in the 928 argument (the dafault is 1), with trailing zeroes and periods stripped. 929 929 930 * ``36.123`` gets converted to ``36.1`` 931 * ``36.15`` gets converted to ``36.2`` 932 * ``36`` gets converted to ``36`` 930 Example: 933 931 932 * ``{{ "36.12345"|floatformat:2 }}`` displays ``36.12`` 933 * ``{{ "36.123"|floatformat }}`` displays ``36.1`` 934 * ``{{ "36.15"|floatformat }}`` displays ``36.2`` 935 * ``{{ "36"|floatformat }}`` displays ``36`` 936 934 937 get_digit 935 938 ~~~~~~~~~ 936 939 -
tests/regressiontests/defaultfilters/tests.py
8 8 >>> floatformat(0.07) 9 9 '0.1' 10 10 >>> floatformat(0.007) 11 '0 .0'11 '0' 12 12 >>> floatformat(0.0) 13 13 '0' 14 >>> floatformat(10.0) 15 '10' 14 16 17 >>> floatformat(3.14159, 2) 18 '3.14' 19 >>> floatformat(0.0, 2) 20 '0' 21 >>> floatformat(1.1, 2) 22 '1.1' 23 >>> floatformat(1.017, 2) 24 '1.02' 25 15 26 >>> addslashes('"double quotes" and \'single quotes\'') 16 27 '\\"double quotes\\" and \\\'single quotes\\\'' 17 28