bool multiply_overflow_double(double a,double b)
{
double v = a * b;
if (std::isfinite(v))
return (v > std::numeric_limits<uint64_t>::max());
return true;
}
我得到两个双精度浮点数,需要检查它们是否会导致uint64_t类型的溢出。我考虑过使用传统的除法方法,但这种方法似乎更简单。
相对于传统方法,给定a和b大于0的情况下,显然会有哪些问题?
v
是负数...? - Eljay