下面有两种情况,看似相同的操作,结果却相差1。我想我不需要解释编程,很简单。
变量声明在前,场景1为1)和2 = 2),每个场景最后列出得到的结果。
如有任何帮助,我们将不胜感激。
int intWorkingNumber = 176555;
int intHundreds = 1;
int intPower = 1;
1)
int intDeductionValue = (intHundreds * 100 * pow(1000, intPower));
intWorkingNumber -= intDeductionValue;
intWorkingNumber = 76555
2)
intWorkingNumber -= (intHundreds * 100 * pow(1000, intPower))
intWorkingNumber = 76554
最佳答案
两个代码示例之间的区别在于您转换为 int 的时间。
第一个版本类似于这段代码,在减去之前转换为整数:
intWorkingNumber = 176555 - (int)(1 * 100 * pow(1000, 1));
第二个版本与此类似,在减去之后转换为整数:
intWorkingNumber = (int)(176555 - (1 * 100 * pow(1000, 1)));
pow
函数返回一个 float 。如果 1 * 100 * pow(1000, 1)
的结果不完全等于 100000.0000
(并且对于浮点运算,您应该通常不依赖于确切的结果)这两个不等价。
考虑这个更简单的例子:
x = 10 - (int)0.001; // x = 10 - 0; => x = 10
y = (int)(10 - 0.001); // y = (int)9.999; => y = 9
关于c++ - 不同的答案 : two simple identical integer calculations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921358/