Login

Significant digits filter

Author:
joelegner
Posted:
March 13, 2009
Language:
Python
Version:
1.0
Score:
3 (after 3 ratings)

Formats float values with specified number of significant digits (defaults to 3).

Usage:

{{value|sigdig}} # with 3 significant digits by default {{value|sigdig:digits}}

Examples:

{{0.001432143|sigdig}} renders as 0.00143

{{874321.4327184|sigdig}} renders as 874000

{{874321.4327184|sigdig:5}} renders as 874320

Useful for scientific or engineering presentation.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from django import template
import math

register = template.Library()

def sigdig(value, digits = 3):
    order = int(math.floor(math.log10(math.fabs(value))))
    places = digits - order - 1
    if places > 0:
        fmtstr = "%%.%df" % (places)
    else:
        fmtstr = "%.0f"
    return fmtstr % (round(value, places))


register.filter('sigdig', sigdig)

More like this

  1. LazyPrimaryKeyRelatedField by LLyaudet 1 week ago
  2. CacheInDictManager by LLyaudet 1 week ago
  3. MYSQL Full Text Expression by Bidaya0 1 week, 1 day ago
  4. Custom model manager chaining (Python 3 re-write) by Spotted1270 2 weeks ago
  5. Django Standard API Response Middleware for DRF for modern frontend easy usage by Denactive 1 month ago

Comments

zglennie (on October 18, 2013):

Thanks! Works perfectly. Note - if your input is a string, cast it to float.

#

Please login first before commenting.