ストレージが 2 倍であるにもかかわらず、ゼロになる除算の問題
数値演算では、関係するオペランドのタイプを考慮することが重要です。浮動小数点数を扱う場合、予期しない結果を避けるために明示的な型キャストが必要になる場合があります。
提供されたコード スニペットでは、3 と 5 の間の除算演算が整数オペランドを使用して実行され、整数除算が行われます。この結果、商はゼロになります。目的の浮動小数点除算を行うには、オペランドの少なくとも 1 つを明示的に double 型にキャストする必要があります。修正されたコードを以下に示します。
#include <iostream> int main(int argc, char** argv) { double f = 3.0 / 5; std::cout << f; return 0; }
3 を double (3.0) にキャストすると、コンパイラは浮動小数点除算を実行し、予想される非ゼロ値が得られます。これは、正確な結果を得るために数値演算のオペランドの型に注意を払うことの重要性を強調しています。
以上が整数を 3 で 5 で割ると結果がゼロになるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。