这个问题已经在这里有了答案:
已关闭8年。
在C++中将double转换为int损失1
#include <iostream>
#include <cmath>
using namespace std;
void main() {
double num = 1234.34;
int numInt = num;
double numAfterPoint = num - numInt; // 0.34
int counter = 1;
double numFloatPower = numAfterPoint;
while (true) {
numFloatPower = numAfterPoint * pow(10.0, counter);
cout << numFloatPower << " > " << (int)numFloatPower << " ";
system("pause");
counter++;
}
}
当前结果:
3.4 > 3 Press any key to continue . . .
34 > 33 Press any key to continue . . .
340 > 339 Press any key to continue . . .
3400 > 3399 Press any key to continue . . .
结果应为:
3.4 > 3 Press any key to continue . . .
34 > 34 Press any key to continue . . .
340 > 340 Press any key to continue . . .
3400 > 3400 Press any key to continue . . .
等...
最佳答案
强制转换为intt的操作(int)doubleValue
执行截断,这意味着如果该数字在内部表示为33.999999999 ...,它将被截断为33。
如果需要进行舍入(3.9→4、3.4→3),请使用round()
。
注意: