位置: 编程技术 - 正文

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 获取需要授权页面的方法

  • 注册税务师报名条件
  • 个税系统里的收入包括什么
  • 短期借款的实际资金成本
  • 电费为什么计入成本费用
  • 什么时候用以前年度损益调整什么时候用年初未分配利润
  • 开模费用计入什么科目
  • 累计折旧和固定资产减值准备的区别
  • 发票领购簿遗失怎么办
  • 土地股权转让需交什么税
  • 融资租入固定资产属于资产吗
  • 行政单位发过节费违法吗
  • 企业股权融资方式有
  • 预付账款转入其他非流动资产
  • 向税务局缴纳工伤保险费有发票吗
  • 收到发票错误主管有责任吗
  • 成本暂估跨年度要怎么处理?
  • 税收滞纳金算不算所得税
  • 发票章丢失风险大吗
  • 2018营改增房产税计税依据
  • 附加税记入什么科目
  • 年底进项税和销项税怎么记
  • 缴纳社保需要什么东西
  • 季度不含税收入30万以内免增值税
  • 高新技术企业取消资格的程序
  • 给法院交的诉讼费怎么交
  • 收到出口退税计入什么
  • 一般纳税人进项税额转出会计分录
  • php array数组
  • 消费税不可抵扣已纳税款
  • 金融资产减值的账务处理
  • 井下生产安全知识
  • vue框架基础知识
  • framework7教程
  • centos从命令行进入图形
  • 工程分包合同
  • 蓝桥杯真题c语言
  • js中move
  • ip6tables-save命令 保存ip6tables表配置
  • 怎样才能帮你
  • 营改增前取得的有形动产为标的物
  • vue大型项目架构设计
  • 企业如何利用期货对冲风险怎么操作
  • 行政事业单位固定资产划拨账务处理
  • 印花税申报未扣款在哪里查询
  • 预交的企业所得税如何记账
  • php安装不了
  • 其他收益算主营业务收入吗
  • 资产总额是营业收入吗
  • 怎么做掉公司账面库存100万
  • 查补以前年度所得税
  • 已认证的增值税专用发票退票
  • 其他综合收益核算的内容及会计处理
  • 企业贷款利息费用会计分录
  • 失业保险金的支付方式
  • 年底销项税额和进项税额要转出吗
  • 测试账户收入怎么处理
  • 营业外收入明细账图片
  • 京东卖家怎么开普通发票
  • 登记生产成本和制造费用的明细账
  • mysql为什么很受大家青睐
  • mysql zip archive 版本(5.7.19)安装教程详细介绍
  • sqlserver数据库显示单个用户
  • spoolsv.exe是什么文件
  • win10技巧 新功能
  • 利用windows资源管理
  • linux安装软件可以用哪些方式
  • centos6.5双网卡绑定
  • 双win系统怎么删除一个
  • win8如何进入metro界面
  • 表单提交servlet
  • IEnumerator/ IEnumerable/ yield return/ StartCoroutine 详解
  • unity网格地形
  • javascript概述及作用
  • jquery插件免费下载
  • python socketcan
  • Android之Service
  • python+flask
  • 河南林州在哪三省交界处
  • 财产转让所得适用税率
  • 建筑劳务分包业务范围
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设