#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);
全部谢谢
答案 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}}