下面有两种情况,操作看似相同但产生的结果不同1.我认为我不需要解释编程,这很简单.
变量声明是第一个,场景1是1)和2 = 2),并且获得的结果在每个场景中最后列出.
任何帮助将不胜感激.
int intWorkingNumber = 176555;
int intHundreds = 1;
int intPower = 1;
Run Code Online (Sandbox Code Playgroud)
1)
int intDeductionValue = (intHundreds * 100 * pow(1000, intPower));
intWorkingNumber -= intDeductionValue;
intWorkingNumber = 76555
Run Code Online (Sandbox Code Playgroud)
2)
intWorkingNumber -= (intHundreds * 100 * pow(1000, intPower))
intWorkingNumber = 76554
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 17
两个代码示例之间的区别在于您转换为int时.
第一个版本与此代码类似,在您减去之前转换为整数:
intWorkingNumber = 176555 - (int)(1 * 100 * pow(1000, 1));
Run Code Online (Sandbox Code Playgroud)
第二个版本与此类似,在您减去后转换为整数:
intWorkingNumber = (int)(176555 - (1 * 100 * pow(1000, 1)));
Run Code Online (Sandbox Code Playgroud)
该函数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
Run Code Online (Sandbox Code Playgroud)