1

簡単な計算をしようとしています: ( (45/100) - (20+50)/200 )*(10+5)

答えは 1.5 になると予想していますが、プログラムをコンパイルすると 0 と表示されます。

誰かが私のためにこれを理解できますか

#include <iostream>
using namespace std;

int main()
{
   float   CivIndex = ( (45/100) -  (20+50)/200 )
                  *(10+5);

   cout<<CivIndex; // expect 1.5 but getting 0
}
4

7 に答える 7

2

C およびその他のいくつかの言語では、2 つの整数を除算すると整数になります (整数除算)。それは45 / 100あなたのコード0にあり、期待される代わりに0.45

修正は簡単です。オペランドの 1 つを浮動小数点に変換します。

float   CivIndex = ( (45/100.0) -  (20+50)/200.0 )
              *(10+5);
于 2013-10-07T16:40:40.710 に答える
1

整数除算を 0.45 にしたいのですが、実際には 0 です。

これを次のように変更してみてください。

 float   CivIndex = ( (45.0/100) -  (20.0+50.0)/200 )
              *(10+5);
于 2013-10-07T16:40:58.377 に答える
0

基本的に、整数のみを含む式を評価しています。したがって、結果は整数になります。整数式の最終結果に対してキャストを使用できます。例えば。

int a=20;float b; b=(float)a;cout<<"b: "<<b;

構文を確認してください。

または、上記のように、オペランドの 1 つを float/double として作成することもできます (要件が許せば)。

于 2013-10-07T17:11:21.530 に答える