ホームページ >バックエンド開発 >C++ >C# の整数の除算で切り捨てが発生するのはなぜですか?それを回避するにはどうすればよいですか?

C# の整数の除算で切り捨てが発生するのはなぜですか?それを回避するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-05 18:24:40721ブラウズ

Why Does C# Integer Division Round Down, and How Can I Avoid It?

C# での除算の切り捨て

C# で除算を実行すると、プログラマは予期しない切り捨て動作に遭遇する可能性があります。この問題は、整数の除算が実行され、小数部分が失われる場合に発生します。

説明するには、次のコードを考えてみましょう。

double i;
i = 200 / 3; // Integer division
MessageBox.Show(i.ToString());

このコードは、値を含むメッセージ ボックスを表示します。 「66」。ただし、200 / 3 の期待される結果は 66.66666 になるはずです...

解決策: Double Division を使用します

この切り捨てを回避し、浮動小数点精度を維持するには、次のようにします。整数除算の代わりに倍精度除算を使用する必要があります。これは、次の方法で実現できます。

  1. オペランドの 1 つを double に変換します:
i = (double)200 / 3;
  1. 1 つのオペランドで末尾の小数点を使用します:
i = 200.0 / 3;
  1. d を追加する1 つのオペランドの接尾辞:
i = 200d / 3;

二重除算を使用すると、除算演算子 / はすべての有効数字を保持したまま浮動小数点除算を実行します。

以上がC# の整数の除算で切り捨てが発生するのはなぜですか?それを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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