我认为这个转换不会失败。所以boost::numeric_cast<double>(long)
应该产生与常规转换相同的结果。
这是正确的吗?如果是这样,为什么是boost::numeric_cast
比普通 Actor 慢?它正在进行某种检查吗?
最佳答案
static_assert((1ull<<57ull)!=(1+(1ull<<57ull)));
static_assert((double)(1ull<<57ull)==(double)(1+(1ull<<57ull)));
boost numericcast 会抛出那一轮,就像上面的代码一样。
64 位整数可以表示一些 64 位 double 无法表示的整数。 64 位 double 在“指数”上花费位。
关于c++ - 使用 boost::numeric_cast<double>(long) 是否有目的(即从 long 转换为 double)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66553674/