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

- Serializer factory with Django Rest Framework by julio 3 months, 1 week ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 4 months ago
- Help text hyperlinks by sa2812 4 months, 3 weeks ago
- Stuff by NixonDash 7 months ago
- Add custom fields to the built-in Group model by jmoppel 9 months, 1 week ago

## Comments

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

#

Please login first before commenting.