mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
tpl: Fix bad rounding in NumFmt
strconv.FormatFloat doesn't round properly sometimes, this adds a different method of rounding, fixes #7116
This commit is contained in:
parent
f7d909f394
commit
3d9235e8fc
2 changed files with 8 additions and 1 deletions
|
@ -102,10 +102,13 @@ func (ns *Namespace) NumFmt(precision, number interface{}, options ...interface{
|
|||
}
|
||||
}
|
||||
|
||||
exp := math.Pow(10.0, float64(prec))
|
||||
r := math.Round(n*exp) / exp
|
||||
|
||||
// Logic from MIT Licensed github.com/go-playground/locales/
|
||||
// Original Copyright (c) 2016 Go Playground
|
||||
|
||||
s := strconv.FormatFloat(math.Abs(n), 'f', prec, 64)
|
||||
s := strconv.FormatFloat(math.Abs(r), 'f', prec, 64)
|
||||
L := len(s) + 2 + len(s[:len(s)-1-prec])/3
|
||||
|
||||
var count int
|
||||
|
|
|
@ -29,6 +29,10 @@ func TestNumFormat(t *testing.T) {
|
|||
{0, 12345.6789, "- . ,", "", "12,346"},
|
||||
{11, -12345.6789, "- . ,", "", "-12,345.67890000000"},
|
||||
|
||||
{2, 927.675, "- .", "", "927.68"},
|
||||
{2, 1927.675, "- .", "", "1927.68"},
|
||||
{2, 2927.675, "- .", "", "2927.68"},
|
||||
|
||||
{3, -12345.6789, "- ,", "", "-12345,679"},
|
||||
{6, -12345.6789, "- , .", "", "-12.345,678900"},
|
||||
|
||||
|
|
Loading…
Reference in a new issue