考虑以下代码:
#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;”但我不喜欢它.
编辑:
发现做“return float(a * 0.3)”;给出期望值
解决方法
0.3 * 35000的结果是一个浮点数,只是稍小于10500.打印时它被舍入为10500,但是当被强制转换成int时,数字被丢弃,导致10499.