C++中的floatdouble不能直接和0比较

    xiaoxiao2022-07-06  236

    举个例子

    bool func(double a, double b, double& c) { if (b == 0) return false; c = a / b; return true; } int main(int argc, const char** argv) { double a = 19, b = 0, c = 0; bool res = func(a, b, c); if (!res) { cout << "The func fails!" << endl; return 0; } else cout << "The func succeeds!" << endl; return 0; }

    结果为 The func fails! 注销掉func函数中的if (b == 0) return false;则程序显示 The func succeeds!

    程序并没有崩溃,是因为float或double中的零是近似零,不能直接写成 if (b == 0) 应该写成

    if (b > -0.000001 && b < 0.000001)
    最新回复(0)