ホームページ >バックエンド開発 >Golang >Go の除算演算 (/) が小数ではなく 0 を返す場合があるのはなぜですか?

Go の除算演算 (/) が小数ではなく 0 を返す場合があるのはなぜですか?

DDD
DDDオリジナル
2024-12-11 15:17:09339ブラウズ

Why Does Go's Division Operation (/) Sometimes Return 0 Instead of a Decimal?

Go の除算演算

Go では、除算演算 (/) はオペランドの型に応じて異なる方法で実行されます。式 fmt.Println(3 / 10) の結果が 0.3 ではなく 0 になる理由を理解するために、Go の型システムを詳しく調べてみましょう。

この式のオペランドは型なしの整数定数であり、Go の規則によれば、言語仕様では、型なし定数を使用した算術演算の結果は、型が出現する順序によって決まります。整数定数は浮動小数点定数よりも前にあるため、式は整数の除算として評価され、結果は 0 になります。

浮動小数点の結果を取得するには、オペランドの少なくとも 1 つが浮動小数点定数である必要があります。これを実現するには、3.0 / 10.0、3.0 / 10、または 3 / 10.0 と記述できます。最初の 2 つの式は型なしの浮動小数点定数を使用し、最後の式は整数定数 3 を float64 に変換します。

さらに、一方のオペランドが型なしの定数で、もう一方が型ありのオペランドである場合、その型は式は型指定されたオペランドによって決まります。したがって、var i3 = 3 および var i10 = 10 は、fmt.Println(float64(i3) / float64(i10)) を使用して float64 に変換できます。

10.0 のような数値リテラルは型なし浮動小数点定数であることに注意してください。 、i3 / 10.0 や 3.0 / i10 のような式は引き続き次のように評価されます。型付きオペランド (i3 および i10) によって結果の型が決定されるため、整数の除算が行われます。

以上がGo の除算演算 (/) が小数ではなく 0 を返す場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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