c ++为什么((1/2)* 2)返回0

时间:2015-05-12 10:22:14

标签: c++

我第一次发布在这里,但我必须知道这种简单的代码安静有什么问题:

#include <iostream>

using namespace std;

int main()
{
    double test = (1 / 2) * 2;
    cout << test << endl;
    return 0;
}

当我运行它显示0的代码时,如果我正在构建某些东西,它会发生,无论我使用什么编译器,如果'1'被划分为某种形式的小数,它会返回更奇怪的结果。

4 个答案:

答案 0 :(得分:5)

因为整数数学1 / 2 == 00 * 2 == 0

请尝试使用1.02.0

答案 1 :(得分:2)

(1 / 2)中,1和2都是整数,这意味着结果也是整数。这意味着表达式返回00 * 20

要获得所需的结果,请尝试(1.0 / 2.0)

答案 2 :(得分:1)

如果你想得到正确的结果,你需要写:

#include <iostream>

using namespace std;

int main()
{
  double test = ((double)1 / 2) * 2;
  cout << test << endl;
  return 0;
}

答案 3 :(得分:0)

您使用int代替double

...定影

#include <iostream>

using namespace std;

int main()
{
    double test = (1.0 / 2.0) * 2.0;
    cout << test << endl;
    return 0;
}