golangの整数除算

WBOY
リリース: 2023-05-19 10:15:37
オリジナル
1335 人が閲覧しました

Golang は、優れた同時実行機能と、整数型を含む組み込みデータ型を備えた、効率的で最新のプログラミング言語です。整数は、小数点以下の桁を含まない整数を表す基本的なデータ型です。

Golang では、整数の除算は一般的な演算ですが、使用中に時々奇妙な結果に遭遇することがあります。この記事では、Golang における整数の除算の演算ルールと一般的な問題に焦点を当て、いくつかの解決策を提供します。

1. Golang の整数型

Golang の整数型には、int、int8、int16、int32、int64 と、対応する符号なし整数型 uint、uint8、uint16、uint32、uint64 が含まれます。このうち、int と uint は、32 ビット オペレーティング システムでは 4 バイト (32 ビット)、64 ビット オペレーティング システムでは 8 バイト (64 ビット) を占有します。整数のサイズを明確に知りたい場合は、int32、int64、uint32、uint64 などの型を使用することをお勧めします。

2. 整数の除算演算規則

Golang では、整数の除算記号は「/」であり、その演算規則は次のとおりです:

1. If two Ifオペランドはすべて整数であり、除算演算の結果は整数の商となり、小数部分は省略されます。

例:

a := 5
b := 2
c := a / b
ログイン後にコピー

このときの c の値は、5/2 が 2.5 となり、小数部が切り捨てられるため、2 となります。

2. 両方のオペランドが浮動小数点型の場合、除算演算の結果は、小数部分を保持した浮動小数点商になります。

例:

a := 5.0
b := 2.0
c := a / b
ログイン後にコピー

5.0/2.0は2.5に等しいため、このときのcの値は2.5となり、小数部分は保持されます。

3. 一方のオペランドが整数で、もう一方のオペランドが浮動小数点数の場合、Golang は演算のために整数を浮動小数点数に変換し、小数部分を最終結果に保持します。

例:

a := 5
b := 2.0
c := a / b
ログイン後にコピー
ログイン後にコピー

このときの c の値は 2.5 です。これは、5 を 5.0 に変換し、2.0 で割って 2.5 を求めるためです。

3. Golang の整数除算に関するよくある質問

1. 浮動小数点数の整数除算は不正確な結果になります

整数除算では小数部が省略されるため、 、整数の除算と浮動小数点演算を実行すると、誤った結果が得られます。例:

a := 5
b := 2.0
c := a / b
ログイン後にコピー
ログイン後にコピー

上記のコードでは、c の値は 2 ですが、これは予期した 2.5 とは異なります。この問題を解決する方法は、整数型を浮動小数点数に変換してから演算を実行することです:

a := 5
b := 2.0
c := float64(a) / b
ログイン後にコピー

2. 整数型を 0 で除算すると実行時エラーが発生します

In Golang では、整数型を 0 で除算すると、実行時エラー (実行時エラー) が発生します。例:

a := 5
b := 0
c := a / b
ログイン後にコピー

上記のコードは、「実行時エラー: 整数をゼロで除算する」エラーをスローします。

この状況を回避するには、除算演算を実行する前に除数が 0 かどうかを判断できます。

a := 5
b := 0
if b == 0 {
    // 处理除数为0的情况
} else {
    c := a / b
}
ログイン後にコピー

または、浮動小数点数型を使用します。なぜなら、浮動小数点数型を次のように除算するからです。 0 を指定しても実行時エラーは発生しないため、コードは正しく実行できます。

3. 整数の除算は 0 に丸められます

Golang の整数の除算は 0 に丸められます。これは、整数部分のみを保持し、四捨五入や切り上げを実行せずに小数部分を破棄することを意味します。

例:

a := 5
b := 3
c := a / b
ログイン後にコピー

上記のコードでは、整数の除算は 0 に四捨五入されるため、c の値は 2 ではなく 1 になります。

4. 概要

整数の除算は一般的な演算ですが、Golang 独自の特徴もあります。整数の除算で発生する可能性のある演算ルールと一般的な問題に注意し、それに応じた解決策を講じる必要があります。

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

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