c++ - 使用 boost::numeric_cast<double>(long) 是否有目的(即从 long 转换为 double)?

标签 c++ boost casting numeric-conversion

我认为这个转换不会失败。所以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/

相关文章:

c++ - 在QT中读取窗口的注册表

c++ - 快速嵌入式数据库

c++ - 链接到 Boost 预编译库时获取 LnK1104

c++ - 为什么boost asio中的async_read将const MutableBufferSequence作为第二个参数?

c++ - ostream_iterator 到字符串而不是 cout?

java - 使用 ObjectInputStream 等待来自套接字的数据

c++ - release() 未声明为 c++

c++ - C++ 'if' 语句中的变量赋值

asp.net - 在 VB.Net 中将字符串转换为 Guid

scala - 任何可以消除我的 Spark 模式取消无效器中的 asInstanceOf 和 A​​ny 的 scala 技巧?