gpt4 book ai didi

c++ - 截断并转换为 ceiled double 的 int

转载 作者:太空狗 更新时间:2023-10-29 20:38:30 28 4
gpt4 key购买 nike

当对 double 值执行 std::ceil 时,该值将四舍五入为整数。所以3.3会变成4.0。可以转换或截断为 int。这将“切断”逗号后的部分。所以:

int foo = (int)std::ceil(3.3);

所以乍一看,这会将 4 存储在 foo 中。但是,double 是一个浮点值。所以它可能是 4.0000000013.999999999。后者将被截断为 3。

但实际上我从未见过这种行为发生。我可以安全地假设任何实现都会返回 4 吗?还是只有 IEEE-754 执行此操作。还是我只是运气好?

最佳答案

四舍五入(或上限) double 将始终、始终、始终准确。

对于2^(m+1)以下的 float ,其中m是尾数位数,所有整数都有精确表示,所以可以精确表示结果。

对于大于 2^(m+1) 的 float ...它们已经是整数。如果您考虑一下,这是有道理的:没有足够的尾数位来向下延伸到小数点的右边。所以再次舍入/上限是准确的。

关于c++ - 截断并转换为 ceiled double 的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263213/

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