From 5ba1f5cbddd86e732b088e169ab3a2d27c895a09 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 2 Jan 2014 17:30:57 +0100 Subject: [PATCH] round value before formatting in order to avoid zope.i18n formatter bug --- util/format.py | 5 ++++- util/format.txt | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/util/format.py b/util/format.py index 1299778..43c58c9 100644 --- a/util/format.py +++ b/util/format.py @@ -50,9 +50,12 @@ def formatDate(dt=None, type='date', variant='medium', lang='de'): return fmt.format(dt or datetime.now()) -def formatNumber(num, type='decimal', lang='de', pattern=u'#,##0.00;-#,##0.00'): +def formatNumber(num, type='decimal', lang='de', + pattern=u'#,##0.00;-#,##0.00', precision=2): loc = locales.getLocale(lang) fmt = loc.numbers.getFormatter(type) + if precision: + num = round(num, precision) # avoid zope.i18n formatting bug return fmt.format(num, pattern=pattern) diff --git a/util/format.txt b/util/format.txt index b96450a..cfab90f 100644 --- a/util/format.txt +++ b/util/format.txt @@ -15,3 +15,5 @@ Basic Formatting Functions >>> format.formatNumber(17.2) u'17,20' + >>> format.formatNumber(13399.99999997) + u'13.400,00'