位置: 编程技术 - 正文

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

  • 服务费收入是什么
  • 个人所得税是什么意思有什么用
  • 减免的增值税如何计算
  • 个人补缴的医保要做账吗
  • 专用发票只能公对公吗
  • 库存商品转为固定资产说明
  • 个人代开普票需要交个人所得税吗
  • 贷款公司是怎么贷款的
  • 外债利息支付需要按照天计算吗?
  • 小规模纳税人怎样报税
  • 养殖企业如何做销售
  • 存货盘点科目
  • 企业购入车辆会计分录
  • 金融资产的减少为什么记在贷方
  • 个体工商户该如何交税
  • 如何查询当月社保和公积金是否缴纳
  • 小规模纳税人普票超过30万怎么交税
  • 税务局锁了开票系统票已领出还可以开出来吗
  • 啤酒消费税的计税基础
  • 所得税季报收入是全年吗
  • 个人所得税0元算不算缴税
  • 不计提直接发工资
  • 企业出售二手车增值税如何缴纳
  • 补交申报的利息怎么入账
  • 员工垫付费用多久报销合理
  • 别的公司代缴社保合法
  • win10点击添加账户没反应
  • 存货跌价准备会影响利润吗
  • 应付账款的暂估入账
  • 出口退税是怎么退
  • backupnotify.exe是什么文件的进程 backupnotify进程安全吗
  • win11可以玩游戏吗
  • Win10 20H2 LSASS.exe自动重启故障已得到修复
  • npscheck.exe - npscheck是什么进程 有什么用
  • shwiconem.exe - shwiconem是什么进程 有什么用
  • antdesign vue pro
  • php写文件函数
  • 金蝶迷你版怎么安装
  • 工业总产值和营业收入关系
  • 企业在外地单位怎么交税
  • 兼职人员的工资怎么做账
  • java变量初始化的两种方式
  • mongodb聚合统计数量
  • 结转应交税金的分录
  • 公司一年的账目怎样算
  • 法律中的大额和小额规定
  • 给客户的客户开普票算不算虚开
  • 固定资产一次性加速折旧
  • 电商公司不用交税吗
  • 房地产企业销售现房是否预缴增值税
  • 物流运输车类型
  • 红字发票怎么申报增值税
  • 如何建立明细分类账
  • windows10内置应用是哪些
  • 苹果mac最新的系统
  • 如何使用光盘做启动盘
  • os x10.11el capitan公测版下载地址(公测版计划注册教程)
  • linux urb
  • win7 便签
  • 苹果mac 最新系统
  • win10任务栏位置怎么改变
  • win10关闭defender方法
  • macbookair控制面板
  • yum could not resolve host
  • linux 压缩rar
  • win8.1怎么退出安全模式
  • cocos2d教程
  • unity小技巧
  • 用python加密
  • perl脚本use strict
  • 自动化测试读写题答案
  • android studio 无法解析 aar
  • jquery的validate前端表单验证
  • andriod中SimpleAdapter+listview,点击item 传值事件
  • 江西省税务局查不到缴费记录
  • 签订税务三方协议
  • 自治区地方税务局于立民简介
  • 湖南税务局发票查询
  • 教师十三薪是什么意思
  • 江苏印花税申报操作流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设