Go の除算を理解する
浮動小数点除算を自動的に実行する他のプログラミング言語とは異なり、Go では除算のために浮動小数点への明示的な変換が必要です。操作。これにより、整数を操作するときに予期しない結果が生じる可能性があります。
次のコードを考えてみましょう:
fmt.Println(3 / 10)
これは、予期される 0.3 の代わりに 0 を出力します。その理由は、オペランド 3 と 10 が両方とも型なしの整定数であるためです。 Go 言語仕様によれば、バイナリ演算のオペランドがさまざまな種類の型なし定数である場合、演算と結果はリストの後ろにある型 (整数、ルーン、浮動小数点、複素数) を使用します。この場合、整数は浮動小数点の前に現れるため、結果は型なしの整数 (0) になります。
浮動小数点の結果を取得するには、オペランドの 1 つが浮動小数点定数である必要があります。次の点を考慮してください。
fmt.Println(3.0 / 10.0) fmt.Println(3.0 / 10) fmt.Println(3 / 10.0)
これらの式はすべて、型なし浮動小数点定数 0.3 として評価されます。いずれかのオペランドに .0 を追加すると、明示的に浮動小数点に変換され、浮動小数点の結果が得られます。
除算演算に型付きオペランドが含まれる場合、型付きオペランドの型によって演算結果が決まります。式のタイプ。 float64 の結果を保証するには、型付きオペランドを float64 にする必要があります。例:
var i3 = 3 var i10 = 10 fmt.Println(float64(i3) / 10) fmt.Println(3 / float64(i10))
これらの式は int 変数を float64 に変換し、float64 の結果は 0.3 になります。
10.0 や 3.0 のような数値リテラルは型なし浮動小数点数であることに注意することが重要です。 -float64 ではなくポイント定数。 i3 / 10.0 や 3.0 / i10 のような式は、型指定されたオペランド (i3 と i10) によって結果の型が決まるため、結果は整数 0 になります。
以上がGo は整数の除算をどのように処理しますか?また浮動小数点の結果を保証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。