floor()是否返回正确可表示的内容?

前端之家收集整理的这篇文章主要介绍了floor()是否返回正确可表示的内容?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C89中,floor()返回一个double.以下保证工作吗?
double d = floor(3.0 + 0.5);
int x = (int) d;
assert(x == 3);

我的担心是,在IEEE 754中,结果可能无法正确表示.所以d得到的东西像2.99999,x最终为2.

对于这个问题的答案是肯定的,int范围内的所有整数都必须是双精度的,而floor必须总是返回正确表示的值.

解决方法

如果您的浮点型支持所需的尾数位,所有整数都可以具有精确的浮点表示.由于双重使用53位尾数,它可以准确地存储所有32位int.毕竟,您可以将该值设置为零指数的尾数.

猜你在找的C&C++相关文章