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

Beg*_*ner 10 c++ integer

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

  • 必须提一下,`pow`返回一个浮点数,这是有道理的. (3认同)