gpt4 book ai didi

c++ - 将 float 向上舍入为整数,这有多可靠?

转载 作者:太空狗 更新时间:2023-10-29 23:51:22 26 4
gpt4 key购买 nike

我看过 static_cast<int>(std::ceil(floatValue));前。

但我的问题是,我是否可以绝对指望这不是“不必要的”舍入?我读到一些整数不能用 float 完美表示,所以我担心微小的“错误”会欺骗 ceil()在逻辑上不应该向上舍入。不仅如此,一旦四舍五入,我担心表示中的一个小“错误”可能会导致数字略小于整数,导致转换为 int 以截断它。

这种担心是多余的吗?我记得不久前,python 中的一个示例,其中打印特定的整数会导致它打印的内容非常少(比如 x.999,虽然我记不起确切的数字)

我需要确定的原因是,我正在编写一个纹理缓冲区。常见情况是整数作为 float ,但它偶尔会在需要四舍五入到包含它们的最接近整数宽度和高度的值之间。它以 2 的幂为步长递增,因此不必要的四舍五入成本会导致本应只采用 256x256 纹理的内容需要 512x512 纹理。

最佳答案

如果 floatValue 是精确的,那么您的代码中的舍入就没有问题。唯一可能的问题是溢出(如果结果不适合 int)。当然,对于如此大的值,float 通常没有足够的精度来区分相邻的整数。

然而,危险通常在于 floatValue 本身并不精确。例如,如果它是某些精确答案为整数的计算结果,则由于计算中的浮点舍入误差,它最终可能会比整数大一点点。

所以你是否有问题取决于你如何获得floatValue

关于c++ - 将 float 向上舍入为整数,这有多可靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21615925/

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