c++ - 不同的答案 : two simple identical integer calculations?

标签 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

最佳答案

两个代码示例之间的区别在于您转换为 int 的时间。

第一个版本类似于这段代码,在减去之前转换为整数:

intWorkingNumber = 176555 - (int)(1 * 100 * pow(1000, 1));

第二个版本与此类似,在减去之后转换为整数:

intWorkingNumber = (int)(176555 - (1 * 100 * pow(1000, 1)));

pow 函数返回一个 float 。如果 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

关于c++ - 不同的答案 : two simple identical integer calculations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921358/

相关文章:

Java:使用 DecimalFormat 格式化 double 和整数,但保留没有小数点分隔符的整数

c - C 中整数行的结尾

c++ - 使用迭代器将值插入嵌套映射

c++ - 由于 C++03/C++11 中指针数组的常量性而导致的链接错误

c++ - V8引擎中的隐藏类是如何实现的?

indexing - 使用带有 float 的 Pandas reindex : interpolation

c++ - 使用流运算符将具有整数值的类保存到二进制文件中 >>/<<

MySQL 整数列,唯一值但可能默认吗?

c++ - 你如何在 osx 上使用 waf 链接 opengl 和 glut?

c++ - 非阻塞 RPC 调用,使用 gSoap