无论出于什么原因,就我所知,即使是不可能用零除,一个简单的测试程序也会产生零除错误:
#include <iostream>
using namespace std;
int main()
{
int Level = 1;
int EXPTNL = 0;
cout << Level << endl;
EXPTNL = (Level * 1250) * 1000 * 1000 * Level / (2 / ((1000 * (Level * 1250)) / 2));
cout << EXPTNL << endl;
system("Pause");
}
我想念什么吗?这个完全相同的公式在另一个复杂得多的程序中也可以正常工作。
最佳答案
这几乎肯定会导致零值:
(2 / ((1000 * (Level * 1250))
如果
level
不为零,则1000 * (Level * 1250)
远大于2,在整数除法中,结果将为零。也许您想使用浮点值,以便您的EXPTNL成为浮点计算,然后在末尾使其成为整数。
我还希望(Level * 1250)* 1000 * 1000可以覆盖32位整数,因此您可能希望将其作为浮点计算。
只需将每个1250值变成1250.0即可解决问题。
关于c++ - 简单程序中的零错误除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21155488/