ファイルで言うfloat64
golangで値を小数点以下2桁にフォーマットしたい。ファイルでは、次のようにフォーマットできます。html/template
index.html
.go
strconv.FormatFloat(value, 'f', 2, 32)
しかし、テンプレートでフォーマットする方法がわかりません。gin-gonic/gin
バックエンドにフレームワークを使用しています。どんな助けでも大歓迎です。ありがとう。
ファイルで言うfloat64
golangで値を小数点以下2桁にフォーマットしたい。ファイルでは、次のようにフォーマットできます。html/template
index.html
.go
strconv.FormatFloat(value, 'f', 2, 32)
しかし、テンプレートでフォーマットする方法がわかりません。gin-gonic/gin
バックエンドにフレームワークを使用しています。どんな助けでも大歓迎です。ありがとう。
多くのオプションがあります:
fmt.Sprintf()
テンプレートの実行に渡す前に、たとえば を使用して数値をフォーマットすることができます( n1
)String() string
メソッドを定義する独自のタイプを作成し、好みに合わせてフォーマットすることもできます。これは、テンプレート エンジン ( n2
) によってチェックされ、使用されます。printf
テンプレートから直接かつ明示的に呼び出し、カスタム フォーマット文字列 ( n3
) を使用することもできます。printf
、これには format を渡す必要がありますstring
。毎回これを行いたくない場合は、それを行うカスタム関数を登録できます ( n4
)次の例を参照してください。
type MyFloat float64
func (mf MyFloat) String() string {
return fmt.Sprintf("%.2f", float64(mf))
}
func main() {
t := template.Must(template.New("").Funcs(template.FuncMap{
"MyFormat": func(f float64) string { return fmt.Sprintf("%.2f", f) },
}).Parse(templ))
m := map[string]interface{}{
"n0": 3.1415,
"n1": fmt.Sprintf("%.2f", 3.1415),
"n2": MyFloat(3.1415),
"n3": 3.1415,
"n4": 3.1415,
}
if err := t.Execute(os.Stdout, m); err != nil {
fmt.Println(err)
}
}
const templ = `
Number: n0 = {{.n0}}
Formatted: n1 = {{.n1}}
Custom type: n2 = {{.n2}}
Calling printf: n3 = {{printf "%.2f" .n3}}
MyFormat: n4 = {{MyFormat .n4}}`
出力 ( Go Playgroundで試してください):
Number: n0 = 3.1415
Formatted: n1 = 3.14
Custom type: n2 = 3.14
Calling printf: n3 = 3.14
MyFormat: n4 = 3.14