为什么结果输出是整数,甚至结果被定义为float?

时间:2011-02-14 00:05:57

标签: c++

#include<iostream>

using namespace std;

int main(int argc, char** argv){
        float result;
        result=(340/101);
        cout<<"Result="<<result;

}

在此代码中结果= 3 ,我很好奇为什么会这样?什么是这个原因的预防,它可以看作是一个小问题,但它确实在我的数据分析程序中弃用了我的结果。

编辑:感谢答案,我正在尝试下面的代码,它也给了我3,所以这就是为什么我很困惑,现在我很清楚。

result=(float)(340/101);

全部谢谢

4 个答案:

答案 0 :(得分:4)

因为表达式(340/101)的评估与其周围环境无关。 int/int始终会生成int。如果您稍后将int存储在float变量中,则没有任何区别。

答案 1 :(得分:3)

340是一个整数,101是一个整数,因此340/101执行整数除法。当分配给float时,除法的结果将转换为result

您需要将一个转换为浮点类型以执行浮点除法:

result = static_cast<float>(340)/101;

或只使用浮动文字:

result = 340.0f/101;

答案 2 :(得分:2)

这是由于整数除法,因为除法运算中的两个操作数都是整数。将其中一个数字转换为浮点数,或使用浮点语法:

result = (340.0 / 101.0)

答案 3 :(得分:1)

在C ++中,(340/101)被认为是孤立的。由于/的两个操作数都是int s,编译器会生成整数除法的代码。然后,由于您要将结果分配给float,因此会生成代码以将结果int转换为float

要获得浮点除法,您需要确保(至少)/的一个操作数以float(或double)开头,例如:{ {1}}