Go で数千個のカンマを含む整数をフォーマットするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-30 18:57:30
オリジナル
645 人が閲覧しました

How can I format integers with thousands commas in Go?

Go での千個のカンマを含む整数の書式設定

Go の組み込み fmt.Printf 関数は、千個のカンマを含む整数の出力をネイティブにサポートしていません。ただし、これを実現するにはいくつかの方法があります。

1 つのオプションは、Unicode CLDR でサポートされている言語にローカライズされた書式設定を提供する golang.org/x/text/message パッケージを使用することです。以下に例を示します。

<code class="go">package main

import (
    "golang.org/x/text/language"
    "golang.org/x/text/message"
)

func main() {
    p := message.NewPrinter(language.English)
    p.Printf("%d\n", 1000)

    // Output:
    // 1,000
}</code>
ログイン後にコピー

このコードでは英語ロケールを使用していますが、必要に応じて他のサポートされているロケールを指定できます。

別のオプションは、次のようなサードパーティ ライブラリを使用することです。 [github.com/AlekSi/decimal](https://github.com/AlekSi/decimal) として。このライブラリは、数千のカンマを追加する機能など、数値をフォーマットするためのさまざまな方法を提供します。次に例を示します。

<code class="go">package main

import (
    "github.com/AlekSi/decimal"
)

func main() {
    num := decimal.NewFromFloat(1000)
    str := num.String()

    fmt.Println(str)

    // Output:
    // 1,000
}</code>
ログイン後にコピー

最後に、外部ライブラリを使用したくない場合は、数値を自分で手動でフォーマットできます。これは比較的簡単に実行できます。まず、整数を文字列に変換する必要があります。次に、適切な位置にカンマを挿入する必要があります。その方法は次のとおりです:

<code class="go">func fmtComma(n int) string {
    str := strconv.Itoa(n)
    formatted := ""

    for i := len(str); i > 0; i -= 3 {
        if i == len(str) {
            formatted = str[:i]
        } else {
            formatted = str[i-3:i] + "," + formatted
        }
    }

    return formatted
}

func main() {
    fmt.Println(fmtComma(1000))

    // Output:
    // 1,000
}</code>
ログイン後にコピー

以上がGo で数千個のカンマを含む整数をフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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