c++中整数相除造成的精度损失
分类:Uncategorized
阅读 (1,821)
Add comments
5月 302017
这个精度的损失给本人造成了精神损失! :cry:
整数相除,然后用ceil向上取整,本以为多简单个事,但是搞了半天,整数直接相除得到的结果必定是个整数,即使你把这个结果赋值给一个符点型的变量。
后来才想起来需要强制转换其中一个为符点数然后再相除才可以。看下面的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using std::vector; int main(void){ int i1 = 3; int i2 = 10; double d1 = i2 / i1; double d2 = (double)i2 / i1; std::cout << "d1: " << d1 << "\nd2: " << d2 << std::endl; return 0; } |
输出结果:
1 2 3 |
bash-3.2$ ./a.out d1: 3 d2: 3.33333 |
这个例子很简单,我就不解释啦!
关键是有什么办法可以避免这个问题再发生?不能只凭记忆吧?!