不同答案:两个简单相同的整数计算?

时间:2012-08-12 10:04:52

标签: c++ integer

下面有两种情况,操作看似相同但产生的结果不同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

1 个答案:

答案 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