使用int错误进行浮点变量计算

时间:2016-03-28 06:50:20

标签: c++

我运行以下代码:

// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
{
  int x=4,y=2,z=11;
  float p;
  p=7+z/y-x*2;
  cout<<p;
  return 0;
}

x,y,z声明为整数。为什么p得到一个int而p被声明为float?

感谢。

2 个答案:

答案 0 :(得分:1)

如果a和b是整数,则a / b的结果将始终为整数,而不是浮点数。分割结果只是截断为整数值,浮动部分被丢弃。

在表达式7+z/y-x*2中,只使用整数变量,这就是结果也是整数的原因。

作为一个选项,您可以将右侧的一个操作数转换为float,然后整个表达式将被浮动为float:

7+z/(float)y-x*2

答案 1 :(得分:0)

请将您的整数数据类型更改为float,以便

#include <iostream>
#include <string>
using namespace std;
int main()
{
  float x=4,y=2,z=11;
  float p;
  p=7+z/y-x*2;
  cout<<p;
  return 0;
}