ホームページ >バックエンド開発 >Golang >Go Division が 0.3 ではなく 0 を返すのはなぜですか?

Go Division が 0.3 ではなく 0 を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-04 14:00:13706ブラウズ

Why Does Go Division Return 0 Instead of 0.3?

Go の除算: 0.3 の謎を理解する

Go で除算演算を実行すると、予期しない結果が 0 ではなく 0 になることがあります。予想通り0.3。この独特の動作は、演算で型なし定数を使用するために発生します。

Go では、二項演算のオペランドは、最初は型なし定数として扱われます。演算の結果のタイプは、特定の優先順位を使用するオペランドによって決定されます。 3 や 10 のような整数定数の場合、結果は型なし整数、つまり 0 になります。

浮動小数点の結果を取得するには、少なくとも 1 つのオペランドが浮動小数点定数であることを確認する必要があります。以下の式に示すように、明示的な型変換を使用すると、目的の精度を達成できます:

  • 3.0 / 10.0
  • 3.0 / 10
  • 3 / 10.0

または、整数を変換することもできますfloat64 へのオペランドを明示的に指定します:

  • float64(i3) / 10
  • 3 / float64(i10)

これらの変更により、演算で float を使用するように強制されます。点演算、意図した結果が得られます。 0.3.

したがって、Go で算術演算を実行するときは、使用する定数の種類に注意してください。除算に関するこの特定の問題を回避するには、オペランドが明示的な浮動小数点定数であるか、明示的に float64 への型変換を受けるようにしてください。

以上がGo Division が 0.3 ではなく 0 を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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