c++ - int->double->int 是否保证保值?

标签 c++ c++11

如果我有 int,将其转换为 double,然后将 double 转换回 int,我能保证获得与开始时相同的值(value)吗?换句话说,给定这个函数:

int passThroughDouble(int input)
{
  double d = input;
  return d;
}

我是否保证 passThroughDouble(x) == x 对于所有 ints x

最佳答案

不,不是。该标准没有说明 intdouble 的相对大小。

如果 int 是 64 位整数并且 double 是标准 IEEE double ,那么对于大于 2^53 的数字,它已经失败了.


也就是说,int 在今天的大多数环境中仍然是 32 位的。所以它在很多情况下仍然成立。

关于c++ - int->double->int 是否保证保值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13693249/

相关文章:

c++ - list 和 forward_list 性能之间的区别?

c++ - 为什么显式运算符 std::string 不起作用

c++ - libc++ 不允许从 unique_ptr<T[]> 构造 shared_ptr<T>

c++ - 将 Python HTTP 服务器作为 RPC 服务器嵌入到 C 程序中?

c++ - 多对象绘图 (OpenGL)

c++ - C++中的线程共享数据

c++ - 如果前一个成功,则禁用测试条件

c++ - 第二个参数的部分模板特化

c++ - 如何在 priority_queue 中存储 3 个整数?

c++ - 在函数中分配后的空指针