c++ - 简单程序中的零错误除法

标签 c++ error-handling divide-by-zero

无论出于什么原因,就我所知,即使是不可能用零除,一个简单的测试程序也会产生零除错误:

#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/

相关文章:

c++ - Boost Graph 库中的最佳优先搜索

c++ - 双链表。尝试在 2 个节点之间插入时不执行任何操作

asp-classic - 经典ASP响应状态500

typescript - 如何在 Protractor ( typescript )中制作更具描述性的错误日志消息

c++ - 使用 static_assert() 提供更好的编译时错误(比编译器)

c++ - 如何将 dramsim2 库接口(interface)与 PINtool 链接

IIS 7.5 假 404 错误,路径为 'aux'

oracle - 设置除以 0 返回 0

scala - 如何找到不会给出无限结果的最小 `Double` 除数?

c - 除以零不会导致 Nvidia Jetson 运行时异常