ホームページ > バックエンド開発 > Golang > Go HTML テンプレートで浮動小数点数をフォーマットするにはどうすればよいですか?

Go HTML テンプレートで浮動小数点数をフォーマットするにはどうすればよいですか?

DDD
リリース: 2024-11-09 00:11:01
オリジナル
913 人が閲覧しました

How to Format Floating-Point Numbers in Go HTML Templates?

Go HTML テンプレートでの浮動小数点の書式設定

Go HTML テンプレートでは、表示用に浮動小数点値の書式設定が必要な場合があります。前述したように、.go ファイル内の strconv.FormatFloat を使用して float64 を文字列に変換するのは簡単です。ただし、このアプローチはテンプレートには適していません。

代わりに、HTML テンプレート内でフロートをフォーマットするためのいくつかのオプションがあります。

  • オプション 1: データを入力する前テンプレートでは、.go で fmt.Sprintf を使用して数値をフォーマットします。 file.
  • オプション 2: カスタム データ型を作成し、要件に従って float をフォーマットする String() メソッドを実装します。
  • オプション 3: カスタム形式を指定して、テンプレート内で fmt.Sprintf を直接呼び出します。 string.
  • オプション 4: テンプレート内にカスタム関数を登録し、好みのフォーマット文字列を使用してフロートをフォーマットします。

これを示すコード スニペットの例を次に示します。これらのオプション:

import (
    "fmt"
    "html/template"
    "os"
)

// MyFloat is a custom type for formatting floats.
type MyFloat float64

// String implements the String() method for converting MyFloat to a string.
func (mf MyFloat) String() string {
    return fmt.Sprintf("%.2f", float64(mf))
}

func main() {
    t, err := template.New("").Funcs(template.FuncMap{
        // Register the MyFormat function to format floats using a custom format string.
        "MyFormat": func(f float64) string { return fmt.Sprintf("%.2f", f) },
    }).Parse(templ)
    if err != nil {
        panic(err)
    }

    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 {
        panic(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
ログイン後にコピー

以上がGo HTML テンプレートで浮動小数点数をフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート