位置: 编程技术 - 正文

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

  • 一般纳税人资格认定条件
  • 系统服务的重要地点在哪里
  • 一般纳税人劳务费税率是13还是6
  • 预付账款收不回发票怎么核销
  • 带息承兑汇票的利息收入要缴纳增值税吗
  • 转让股权收入需要缴纳企业所得税吗
  • 预提费用账户期末
  • 个体工商户装修经营范围
  • 销售企业资金风险点有哪些呢
  • 外汇结款怎么办理
  • 超市商品售出可以退货吗
  • 设备投入安装计入什么科目
  • 增值税专用发票有效期是多长时间
  • 一般纳税人可以不交增值税吗
  • 水利建设专项收入的税率是多少?
  • 规避税收风险什么意思
  • 会计档案保管最新规定
  • 计提应付利息编制记账凭证用什么原始凭证?
  • 监理费该谁出
  • 管理费用明细是什么意思
  • 过桥资金法律规定
  • 再生资源会计科目
  • 纳税人办理退税手续流程
  • 总公司中标分公司结算可以吗
  • macbook怎么保存
  • 公司自有房屋出租如何开票
  • bug is
  • 政策性搬迁的会计处理
  • 如何抓好工程建设
  • gwsystemservice.exe是什么进程 有什么作用 gwsystemservice进程查询
  • vue可视化面板怎么打开
  • 厂房维修费是制造费用还是管理费用
  • 增值税专用发票丢了怎么补救
  • 苏尼亚尼
  • php自动识别验证码
  • php用户登录界面代码
  • vue实现回车登录
  • 税务局批扣是什么意思
  • 活动补助会计分录
  • 所得税申报表上的营业成本怎么填
  • 物流公司挂靠车辆怎么做账
  • 零星开支是什么会计科目
  • 免增值税项目可以抵扣吗
  • dedecms配置
  • 金税盘已作废发票可以取消吗
  • 劳务外包收入如何纳税
  • 买新车检测费
  • 出现什么情况企业不能持续经营
  • 代开普通发票需提供哪些材料?
  • 哪些票据属于会计票据
  • 专项应付款如何记账
  • 外购商品发给员工要交个税吗
  • 增值税运费发票清单怎么开
  • 城镇土地使用税征收范围
  • 民办幼儿园的经费投入
  • 软件行业成本如何归集
  • 工程分包总包产生的 税费由谁承担
  • win10系统问题怎么修复
  • xp系统一直在启动界面怎么办
  • win8系统崩溃按f8没用
  • 鼠标点击关闭按钮没反应
  • win10磁盘占用100%卡死
  • win7系统怎么设置开机密码?
  • win8的计算器在哪里
  • linux如何查看磁盘信息
  • win10周年版
  • springmvc接收form表单
  • 方块滚动代码怎么写
  • 微信小程序支付的钱怎么退款
  • 基于nodejs的项目
  • unity3d物体碰撞
  • js中date
  • js解析url参数的方法
  • shell脚本替换文件中某个字符串
  • jQuery插件是什么
  • 进口消费税怎么入账
  • 中山市地方税务局官网
  • 土地二次买卖
  • 深圳国税app官方下载
  • 开票风险预警机制黄色预警严重吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设