加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 由于浮点舍入错误,“floor”是否可能返回不准确的结果?

发布时间:2020-12-16 10:53:36 所属栏目:百科 来源:网络整理
导读:我知道浮点数通常包括舍入误差. 当你取浮点(或双)的地板或天花板以将其转换为整数时,结果值是精确的还是“浮动”值仍然是近似值? 基本上,像floor(3.14159265)这样的东西是否有可能返回一个基本上为2.999999的值,当你试图将它转换为int时会转换为2? 解决方
我知道浮点数通常包括舍入误差.

当你取浮点(或双)的地板或天花板以将其转换为整数时,结果值是精确的还是“浮动”值仍然是近似值?

基本上,像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. 看楼(3.14159265),这将返回3.0.对此没有争议.没什么好说的. 有趣的是,如果你写floor(x),其中x是算术表达式的结果.浮点精度和舍入可能意味着x落在整数的错误一侧.换句话说,产生x的表达式的真值大于某个整数i,但是当使用浮点算法计算时,x小于i.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读