gpt4 book ai didi

c - floor() 是否返回可以完全表示的东西?

转载 作者:太空狗 更新时间:2023-10-29 16:46:48 27 4
gpt4 key购买 nike

在 C89 中,floor() 返回一个 double 值。以下是否保证有效?

double d = floor(3.0 + 0.5);
int x = (int) d;
assert(x == 3);

我担心的是 floor 的结果可能无法在 IEEE 754 中准确表示。因此 d 得到类似 2.99999 的结果,而 x 最终为 2。

要使这个问题的答案为是,int 范围内的所有整数都必须可以精确表示为 double ,并且 floor 必须始终返回该精确表示的值。

最佳答案

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

关于c - floor() 是否返回可以完全表示的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/440204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com