C ++ double cant等于2 int除法

use*_*118 0 c++ double division

我对此问题有些困惑:

int a = 5, b = 2;
double c = a / b;
cout << c;
Run Code Online (Sandbox Code Playgroud)

输出:

2
Run Code Online (Sandbox Code Playgroud)

为什么呢

我可以通过使用以下方式通过:

double aa = a,
bb = b;
c = aa / bb;
Run Code Online (Sandbox Code Playgroud)

输出:

2.5
Run Code Online (Sandbox Code Playgroud)

救命 !:(

Ser*_*sta 6

在C ++语言中,两个整数值之间的任何算术运算都将返回一个int值。换句话说,整数除法欧几里得除法。只有这样,该整数值才会转换为双精度。

如果要进行双精度运算,则必须强制除法对双精度值进行运算,方法是将一个操作数转换为双精度数,或者将其乘以1.0一个双精度常数:

double c = 1.0 * a / b;
Run Code Online (Sandbox Code Playgroud)

要么

double c = static_cast<double>(a) / b;
Run Code Online (Sandbox Code Playgroud)