下面有两种情况,操作看似相同但产生的结果不同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
答案 0 :(得分:17)
两个代码示例之间的区别在于您转换为int。
第一个版本与此代码类似,您在之前转换为整数:
intWorkingNumber = 176555 - (int)(1 * 100 * pow(1000, 1));
第二个版本与此类似,你在之后转换为整数:
intWorkingNumber = (int)(176555 - (1 * 100 * pow(1000, 1)));
函数pow
返回浮点数。如果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