下面有两种情况,其中操作看似相同,但产生的结果不同于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返回一个浮点数.如果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