• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 浮点数取余的方法

php 搞代码 4年前 (2022-01-22) 20次浏览 已收录 0个评论

浮点型(也叫浮点数 float,双精度数 double 或实数 9来源gaodai#ma#com搞@代~码$网搞gaodaima代码real。浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)。

浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。

此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118…。

所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。

本文实例讲述了php 浮点数取余的方法。分享给大家供大家参考,具体如下:

一般我们进行取余运算第一个想到的就是用百分号%,但当除数是个很大的数值,超出了int范围时,这样取余就不准确了。

php大数(浮点数)取余函数:

/** * php大数取余 * * @param int or float $bn 除数 * @param int $sn 被除数 * @return int 余数 *///大数(浮点数)取余方法function Kmod($bn, $sn) {  return intval(fmod(floatval($bn), $sn));}

测试代码:

//大数(浮点数)取余方法function Kmod($bn, $sn) {  return intval(fmod(floatval($bn), $sn));}//整数取余方法function mod($bn, $sn) {  return $bn%$sn;}//最大的int整数$bn = PHP_INT_MAX;$sn = 11;var_dump($bn);var_dump(Kmod($bn, $sn));var_dump(mod($bn, $sn));//给最大的int整数加1$bn = PHP_INT_MAX + 1;var_dump($bn);var_dump(Kmod($bn, $sn));var_dump(mod($bn, $sn));

执行结果:

int 2147483647int 1int 1float 2147483648int 2int -2

以上就是php 浮点数取余的方法的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 浮点数取余的方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址