断言double可以适合int

Cur*_*ous 0 c++ double int overflow c++11

我不确定是否double有一个标准化的表示,这就是我想问的原因,是否有一种很好的方法来编写一个assert确保a中的值double足够小以适应一个int64_t

更具体地说int64_t,a和a 之间的比较double可能超出了前者的范围,并且保证是正确的?

Die*_*ühl 5

像这样的东西会起作用:

assert(std::numeric_limit<int64_t>::min() <= value
       && value <= std::numeric_limits<int64_t>:::max()
Run Code Online (Sandbox Code Playgroud)