位置: 编程技术 - 正文

php 浮点数比较方法详解(php浮点数四舍五入)

编辑:rootadmin

推荐整理分享php 浮点数比较方法详解(php浮点数四舍五入),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php浮点数比较大小,php浮点数比较,php浮点数运算精度问题,php浮点数计算解决方法,php浮点型的比大小,php浮点数运算精度问题,php浮点数比较,php浮点型的比大小,内容如对您有帮助,希望把文章链接给更多的朋友!

浮点数运算精度问题

首先看一个例子:

$a+$b==$c 返回true,正确 $c-$b==$a 返回false,错误

为什么会这样呢?

运算后,精度为位时实际返回的内容如下:

$c-$b 为 0.,因此与0.1比较返回false

出现这个问题是因为浮点数计算涉及精度,当浮点数转为二进制时有可能会造成精度丢失。

浮点数转二进制方法

整数部分采用除以2取余方法

小数部分采用乘以2取整方法

例如:把数字8.5转为二进制

整数部分是8

8/2=4 8%2=0 4/2=2 4%2=0 2/2=1 2%2=0

1比2小,因此不需要计算下去,整数8的二进制为

小数部分是0.5

0.5x2 = 1.0

因取整后小数部分为0,因此不需要再计算下去

小数0.5的二进制为 0.1

8.5的二进制为.1

php 浮点数比较方法详解(php浮点数四舍五入)

计算数字0.9的二进制

0.9x2=1.8 0.8x2=1.6 0.6x2=1.2 0.2x2=0.4 0.4x2=0.8 0.8x2=1.6

…. 之后不断循环下去,当截取精度为N时,N后的数会被舍去,导致精度丢失。

上例中0.9在转为二进制时精度丢失,导致比较时出现错误。

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

正确比较浮点数的方法

1.使用round方法处理后再比较

例子:

2.使用高精度运算方法

首先进行运算时,使用高精度的运算方法,这样可以保证精度不丢失。

高精度运算的方法如下:

bcadd 将两个高精度数字相加

bccomp 比较两个高精度数字,返回-1,0,1

bcdiv 将两个高精度数字相除

bcmod 求高精度数字余数

bcmul 将两个高精度数字相乘

bcpow 求高精度数字乘方

bcpowmod 求高精度数字乘方求模

bcscale 配置默认小数点位数,相当于Linux bc中的”scale=”

bcsqrt 求高精度数字平方根

bcsub 将两个高精度数字相减

例子:

标签: php浮点数四舍五入

本文链接地址:https://www.jiuchutong.com/biancheng/290928.html 转载请保留说明!

上一篇:PHP删除二维数组中相同元素及数组重复值的方法示例(php如何删除数组元素)

下一篇:PHP curl 或 file_get_contents 获取需要授权页面的方法

  • 资产处置损益和固定资产清理的区别
  • 电脑填制记账凭证实训心得
  • 股东之间股权转让流程
  • 年终奖报表怎么做
  • 开票金额为什么会多出一分钱
  • 产品成本核算需要经过哪些程序
  • 在建工程购入的空调怎样入账
  • 进项转出发票是否还可以转回抵扣做分录呢?
  • 跨年的预付账款如何冲销
  • 免抵退税额抵减额是什么意思
  • 工会是否具有有法律效力
  • 停车场如何申领车牌号
  • 冲减增值税销项税额
  • 加油卡预付卡销户怎么办
  • 来料加工进料加工是免税的吗?
  • 企业银行保证金账户怎么查询
  • 作废的发票没有验旧丢了怎么办
  • 企业医保分几种
  • 收到客户赔偿款计入什么科目
  • 微软发布新windows
  • 企业合并案例
  • 小规模纳税人免增值税的账务处理
  • 防水工程质量问题
  • 股权和债权有无区别
  • php rewind
  • wordpress调用指定文章
  • 预付货款账务处理会计分录
  • 企业合并发生的交易费用
  • 账龄分析法计提比例
  • 个人所得税部分缴纳
  • 未开票收入不申报处罚
  • php访问数据库的方式
  • 论文 导论
  • php array_merge_recursive 数组合并
  • 从业人数啥意思
  • 个人终止投资经营的条件
  • 删除python包
  • 如何修改mysql
  • 认缴制无实收资本怎么算
  • SQL Server 2005 镜像构建手册(sql2005数据库同步镜像方案)
  • 信用减值损失属于什么类
  • 打印银行电子回单有断号
  • 损益类账户怎么记入总账
  • 出口退税企业退税流程
  • 收到一张发票摘要怎么填
  • 购入固定资产的增值税计入成本吗
  • 公允价值变动损益和投资收益区别
  • 投资性房地产账面价值大于公允价值计入什么
  • 材料按计划成本计价下,外购材料结算
  • 买卖股票手续费怎么算
  • 购买无形资产的手续费计入
  • 有什么科目需要考试吗英语翻译
  • 关于外贸企业出口的规定
  • 咨询服务费计入哪里
  • 对公账户有资金往来必须入账吗
  • mysql声明全局变量
  • xp系统怎样设置无线网络连接
  • 磁盘清理win10
  • win10如何添加蓝牙驱动
  • win10系统怎么查询ip
  • centos如何安装yum
  • win7系统怎么卸载显卡驱动
  • win7电脑桌面图标间隔太大怎么调
  • winpe怎么弄
  • js 模拟滑动
  • python的模块和包
  • unity灯光烘培
  • javascript运用
  • javascript的介绍
  • jquery的实现原理
  • jQuery EasyUI Tab 选项卡问题小结
  • python连接mysql实例分享
  • web.py 十分钟创建简易博客实现代码
  • js如何禁用按钮
  • android判断应用是否在前台
  • 安卓自动登录脚本
  • android 全局viewmodel
  • 北京市网上税务局(自然人版)
  • 四川国税局普通发票查询?
  • 小微企业如何申报增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设