重複の可能性:
C++ の除算が期待どおりに機能しない
私のプログラムが間違った結果を返すことが判明したので、コードを細かく分割することにしました。ブレークポイントを設定した後、それが判明しました...
double test3 = ((2 - 1) / 2);
...C++ コンパイラによると 0 に等しい。理由がわかりません。誰かが私にそれを説明できますか?
MS Visual Studio Premium 2012 を使用しています
重複の可能性:
C++ の除算が期待どおりに機能しない
私のプログラムが間違った結果を返すことが判明したので、コードを細かく分割することにしました。ブレークポイントを設定した後、それが判明しました...
double test3 = ((2 - 1) / 2);
...C++ コンパイラによると 0 に等しい。理由がわかりません。誰かが私にそれを説明できますか?
MS Visual Studio Premium 2012 を使用しています
整数除算を行っているためです。1/2
は0
に変換されdouble
、 が生成され0.
ます。浮動小数点除算が必要な場合は、除算の引数の 1 つを浮動小数点数にしてみてください。
double test3 = (2.0-1)/2;
右辺で使用した数値はすべて整数であるため (つまり、全体が整数であるため、式は次のように(2-1)/2
評価され0
ます。(int)1/(int)2
0
次のように変更します。
double test3 = ((2 - 1) / 2.0);
そして、式は(int)1/(double)2
であり、これは double に評価されるため、0.5
式に整数のみが含まれている場合、整数演算のみが得られます。浮動小数点演算が必要な場合は、ある時点で浮動小数点式を含める必要があります。
double test3 = ((2 - 1) / 2.0);
数値を 2 倍にしてみてください (2.-1.)/2.;