C ++双重不能等于两个int分区

时间:2016-12-24 17:21:53

标签: c++ double division

我有点困惑于这个问题:

int a = 5, b = 2;
double c = a / b;
cout << c;

输出:

2

为什么?

我可以通过以下方式传递:

double aa = a,
bb = b;
c = aa / bb;

输出:

2.5

帮助! :(

2 个答案:

答案 0 :(得分:5)

在C ++语言中,两个整数值之间的任何算术运算都将返回一个int值。换句话说,整数除法欧几里德除法。然后才将整数值转换为double。

如果你想要一个双重操作,你必须强制除法操作double值,或者通过将一个操作数强制转换为double,或者将它乘以1.0这是一个双重常量:

double c = 1.0 * a / b;

double c = static_cast<double>(a) / b;

答案 1 :(得分:3)

你必须至少将其中一个注入一个双精度数:

double c = a/(double)b;