当前位置:  开发笔记 > 编程语言 > 正文

floor()是否返回了可以完全表示的内容?

如何解决《floor()是否返回了可以完全表示的内容?》经验,为你挑选了1个好方法。

在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必须始终返回该精确表示的值.



1> Mehrdad Afsh..:

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

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有