Django

Code

Ticket #3004: floatformat.diff

File floatformat.diff, 1.8 kB (added by real.human@mrmachine.net, 2 years ago)
  • django/template/defaultfilters.py

    old new  
    2727    from django.utils.html import fix_ampersands 
    2828    return fix_ampersands(value) 
    2929 
    30 def floatformat(text): 
     30def floatformat(text, precision=1): 
    3131    """ 
    32     Displays a floating point number as 34.2 (with one decimal place) -- but 
    33     only if there's a point to be displayed 
     32    Rounds a floating point number to the number of decimal places given in the 
     33    argument, with trailing zeroes and periods stripped. 
    3434    """ 
    3535    try: 
    3636        f = float(text) 
    3737    except ValueError: 
    3838        return '' 
    39     m = f - int(f) 
    40     if m: 
    41         return '%.1f' % f 
    42     else: 
    43         return '%d' % int(f) 
     39    return re.sub(r'\.?0+$', '', ('%%.%sf' % precision) % f) 
    4440 
    4541def linenumbers(value): 
    4642    "Displays text with line numbers" 
  • docs/templates.txt

    old new  
    924924floatformat 
    925925~~~~~~~~~~~ 
    926926 
    927 Rounds a floating-point number to one decimal place -- but only if there's a 
    928 decimal part to be displayed. For example: 
     927Rounds a floating-point number to the number of decimal places given in the 
     928argument (the dafault is 1), with trailing zeroes and periods stripped. 
    929929 
    930     * ``36.123`` gets converted to ``36.1`` 
    931     * ``36.15`` gets converted to ``36.2`` 
    932     * ``36`` gets converted to ``36`` 
     930Example: 
    933931 
     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 
    934937get_digit 
    935938~~~~~~~~~ 
    936939