ホームページ  >  記事  >  バックエンド開発  >  golang はお金をどのように表現しますか?

golang はお金をどのように表現しますか?

PHPz
PHPzオリジナル
2023-05-10 11:35:071292ブラウズ

golang では、お金を表すために float64 または 10 進数ライブラリを使用できます。

  1. float64 を使用してお金を表現する

golang では、浮動小数点数型 float64 は最も一般的に使用される数値型の 1 つであり、これをお金の表現に使用できます。 。基本的な計算と比較のみを行う必要がある場合は、float64 を使用するのが良い選択です。例:

var price float64 = 19.99
var total float64 = price * 2
fmt.Println(total) // 39.98

上記の例では、float64 型の変数 Price を宣言し、19.99 に初期化しました。次に、価格 * 2 を使用して合計価格を計算し、その結果を合計に割り当てます。最後に、合計の値 39.98 を出力します。

ただし、浮動小数点数には精度の問題があることに注意してください。例:

var price float64 = 0.1
var total float64 = price * 0.2
fmt.Println(total) // 0.020000000000000004

上記の例では、float64 型の変数 Price を宣言し、0.1 に初期化しました。次に、価格 * 0.2 を使用して合計価格を計算し、その結果を合計に割り当てます。最後に、合計の値を出力すると、結果は 0.020000000000000004 になります。これは浮動小数点数の精度の問題が原因であるため、お金を扱う場合はより精度の高い 10 進数ライブラリを使用することをお勧めします。

  1. 10 進数ライブラリを使用してお金を表現する

golang の 10 進数ライブラリはより高い精度を提供し、浮動小数点数によって引き起こされる精度の問題を効果的に回避できるため、より適切にお金を表現できます。例:

import "github.com/shopspring/decimal"

func main() {
    price := decimal.NewFromFloat(19.99)
    total := price.Mul(decimal.NewFromInt(2))
    fmt.Println(total) // 39.98
}

上の例では、10 進数ライブラリを使用し、その Mul() メソッドを引用して合計価格を計算しました。また、NewFromFloat() メソッドと NewFromInt() メソッドを使用して 10 進数型の変数を作成します。結果の値は 10 進数値であり、10 の 24 乗の数値精度に相当するため、精度が影響を受けないことが保証されます。

概要

golang では、float64 または 10 進数ライブラリを使用してお金を表現できます。基本的な計算と比較のみを行う必要がある場合は、float64 を使用するのが良い選択です。ただし、浮動小数点数には精度の問題があることに注意することが重要です。より高い精度が必要な場合は、10 進数ライブラリを使用することをお勧めします。お金を扱うときは、正確さの問題による間違いを避けるために、正確さの問題に特に注意してください。

以上がgolang はお金をどのように表現しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。