gpt4 book ai didi

c++ - "floor"是否可能由于浮点舍入错误而返回不准确的结果?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:26:18 26 4
gpt4 key购买 nike

我知道 float 通常会包含舍入误差。

当您取 float (或 double )的底限或上限以将其转换为整数时,结果值是否准确,或者“底限”值是否仍然是近似值?

基本上,像 floor(3.14159265) 这样的东西是否有可能返回一个本质上是 2.999999 的值,当您尝试将其转换为 int 时,它会转换为 2?

最佳答案

Is it possible for something like floor(3.14159265) to return a value which is essentially 2.999999?

floor()函数返回一个精确整数的浮点值。所以你的问题的前提从一开始就是错误的。

现在,floor(x)返回不大于 x 的最接近的整数值.事实总是如此

floor(x) <= x

并且不存在整数 i , 大于 floor(x) , 这样 i <= x .

查看floor(3.14159265) ,这将返回 3.0 .对此没有争论。没什么好说的。

有趣的是如果你写 floor(x)其中 x是算术表达式的结果。浮点精度和舍入可以表示 x落在整数的错误一侧。换句话说,产生 x 的表达式的真实值大于某个整数,i ,但是x当使用浮点运算计算时小于 i .

关于c++ - "floor"是否可能由于浮点舍入错误而返回不准确的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24158625/

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