C
语言中的ceil
函数被声明为double ceil(double)
。将该函数的返回值强制转换为int
类型是安全的吗?我的意思是是否有任何保证以下情况永远不会发生(下面的示例只是为了说明我的意思)?
double r = ceil(234235.53453);
// imagine r = 234235.9999999 due to round errors or
// due to the peculiarities of the machine arithmetics, etc.
int i = (int)r;
// i = 234235, but must be 234236
当然,我知道
double
的范围比int
要大,所以转换可能会失败。但我的问题不是这个,而是关于四舍五入误差或机器算术副作用的。
long long
可能不行,但使用int
很好。 - too honest for this site