如果我有 int
,将其转换为 double
,然后将 double
转换回 int
,我能保证获得与开始时相同的值(value)吗?换句话说,给定这个函数:
int passThroughDouble(int input)
{
double d = input;
return d;
}
我是否保证 passThroughDouble(x) == x
对于所有 int
s x
?
最佳答案
不,不是。该标准没有说明 int
和 double
的相对大小。
如果 int
是 64 位整数并且 double
是标准 IEEE double ,那么对于大于 2^53 的数字,它已经失败了
.
也就是说,int
在今天的大多数环境中仍然是 32 位的。所以它在很多情况下仍然成立。
关于c++ - int->double->int 是否保证保值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13693249/