考虑以下代码:
#include <iostream>
using namespace std;
int aaa(int a) {
cout << a * 0.3 << endl;
return a * 0.3;
}
int main()
{
cout << aaa(35000);
}
它打印出:
10500
10499
为什么输出不同?
我有一个解决方法,可以使用“return a * 3 / 10;”但我不喜欢它。
Edit:
发现执行“return float(a * 0.3);”给出期望值;
0.3*35000 的结果是一个浮点数,略小于 10500。打印时四舍五入为 10500,但当强制转换为 int 时,小数位将被丢弃,结果为 10499。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)