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

- "Magic Link" Management Command by webology 4 months, 1 week ago
- Closest ORM models to a latitude/longitude point by simonw 4 months, 1 week ago
- Log the time taken to execute each DB query by kennyx46 4 months, 1 week ago
- django database snippet by ItsRLuo 4 months, 2 weeks ago
- Serialize a model instance by chriswedgwood 5 months, 2 weeks ago

## Comments

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

#

Please login first before commenting.