首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP floor函数

PHP floor函数
EN

Stack Overflow用户
提问于 2011-08-17 22:22:09
回答 1查看 621关注 0票数 2

有人知道为什么是floor(61681) = 61681而不是floor(616.81*100) = 61680吗?

我尝试过许多其他的值,比如

代码语言:javascript
复制
floor(716.81*100) = 71681
floor(816.81*100) = 81681
floor(916.81*100) = 91681
floor(616.83*100) = 61683

有人知道为什么会这样吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-17 22:27:04

由于二进制浮点数的性质,内部舍入不准确将会发生。没有办法准确地将616.81表示为二进制浮点数-其最接近的值实际上略小于616.81。但是,61681可以精确地表示出来。

616.81的表示乘以100时,结果比61681小一点,因此对它调用floor将返回61680

http://codepad.org/H0wh2itg

如果您想要绝对精度,可以使用PHP的BC数学函数,这些函数可以以性能为代价根据您的需要进行精确计算。例如:

代码语言:javascript
复制
var_dump(floor(bcmul(616.18, 100, 12)));
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7094422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档