ホームページ > バックエンド開発 > Golang > Golang の除算は小数を保持します

Golang の除算は小数を保持します

WBOY
リリース: 2023-05-11 11:38:36
オリジナル
3649 人が閲覧しました

Golang では、除算演算では小数点がどのように保持されるかに注意する必要があります。デフォルトでは、golang は自動的に小数点以下を四捨五入し、結果は期待される結果と等しくなるのではなく、限りなく近いものになります。金融システムなど、正確な計算が必要な一部のシナリオでは、小数点以下の精度を確保する必要があるため、小数点を保持する必要があります。

Golang には、10 進数の保持操作を実装するためのメソッドがいくつか用意されています。この記事では、これらの方法とその長所と短所について説明します。

方法 1: fmt パッケージの Printf 関数を使用する

fmt パッケージは、Golang で提供される書式設定された出力メソッドです。 Printf 関数は、フォーマット文字列を使用して、小数点以下の桁数の保持などの出力フォーマットを定義できます。以下に例を示します。

package main

import (

"fmt"
ログイン後にコピー

)

func main() {

a := 3
b := 2
c := float64(a) / float64(b)

fmt.Printf("%.2f", c)
ログイン後にコピー

}

このコードは、小数点以下 2 桁を保持した c の値を出力します。これは迅速で簡単な方法ですが、結果は変数に保存されません。

方法 2: strconv パッケージの ParseFloat 関数を使用する

strconv パッケージは、Golang で提供される文字列処理パッケージです。 ParseFloat 関数は、文字列を浮動小数点数に変換し、小数点の数を指定できます。以下に例を示します。

package main

import (

"fmt"
"strconv"
ログイン後にコピー

)

func main() {

a := 3
b := 2
c := float64(a) / float64(b)

f, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", c), 64)

fmt.Println(f)
ログイン後にコピー

}

このコードでは、fmt.Sprintf 関数を使用して c の値を小数点以下 2 桁の文字列にフォーマットし、strconv.ParseFloat 関数を使用して浮動小数点数に変換します。このメソッドは結果を変数に保存しますが、浮動小数点数をフォーマットするための追加の処理ステップが必要です。

方法 3: math パッケージの Round 関数を使用する

Round 関数は Golang で提供される丸め関数で、浮動小数点数を指定された小数点以下の桁数に丸めることができます。以下に例を示します。

package main

import (

"fmt"
"math"
ログイン後にコピー

)

func main() {

a := 3
b := 2
c := float64(a) / float64(b)

f := math.Round(c*100) / 100

fmt.Println(f)
ログイン後にコピー

}

このコードでは、 math.Round 関数を使用して c の値を小数点第 2 位に四捨五入し、それを 100 で割って最終結果を取得します。このメソッドは結果を変数に保存するため、追加の書式設定は必要ありません。

概要

上記は、Golang で小数を保持する 3 つの方法です。それぞれに長所と短所があり、使用する場合は実際のニーズに応じて選択する必要があります。精度が必要な財務計算を伴うシナリオでは、結果の正確性を確保するために方法 2 と方法 3 を使用することをお勧めします。

以上がGolang の除算は小数を保持しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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