位置: 编程技术 - 正文

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

  • 营改增后房地产会计账务处理
  • 消费型增值税的特点的是( )
  • 工程项目需要交5000万保证金合理吗
  • 个体工商户免费刻章
  • 现金股利和现金利润的区别
  • 购买生产原料分录
  • 附加税退回分录
  • 打印复印费的明细怎么开?
  • 税收筹划的具体方法有哪些
  • 政策性用房包括哪些
  • 远期转账支票怎么取钱
  • 补缴以前年度税费
  • 行政事业单位取暖费交个人所得税吗
  • 个人如何开劳务费怎么开
  • 增值税专用发票有效期是多长时间
  • 7月1日起,中药生产企业增值税税率为多少?
  • 应纳税所得额是开票金额吗
  • 分支机构能否随总机构认定为一般纳税人
  • 库存现金可以做中转科目嘛为什么
  • 所得税预缴资产怎么计算
  • 建筑施工企业跨区域如何缴税
  • 餐费没有发票怎么入账
  • 收到科技局研发的短信
  • windows 11任务栏没有网络图标
  • 准备金要求定义
  • 注销后怎么补缴社保
  • 办公楼装修费两万合理吗
  • 递延所得税资产借贷方向
  • css盒子如何居中
  • the模板引擎
  • vue框架是什么样子的
  • css中清除浮动
  • php读取php文件内容
  • php 电子签名
  • 大学生创新创业大赛官网
  • 发行债券支付的费用要减吗
  • xml 入门
  • 研发费用加计扣除75%还是100%
  • 简易计税项目可抵扣吗
  • 残疾人报税怎么报
  • python中选择结构也称为什么
  • vue导航方式
  • sql语句字符串比较大小
  • 开发日志模板
  • 最好最实用的织毛线
  • 购买项目用设备计入什么科目
  • 决算报表属于会计账簿吗
  • 营销策划合作协议
  • sqlserver2008安装完在哪打开
  • shell取命令执行结果
  • 解决在sql脚本中怎么写
  • 行政事业单位赞助支出会计核算办法
  • 物业管理费发票备注栏要求
  • 企业如何做增值业务
  • 住宿费收入会计分录
  • 志愿者服务活动有哪些内容
  • 营改增后增加了什么征税项目
  • 自己开发财务软件
  • 为别人开发票先收的税金怎么入帐?
  • 商业健康保险抵扣个税规定
  • 劳务派遣人员能有营业执照吗
  • 如何激活windows2008server
  • ubuntu复制文件到当前文件夹
  • linux中man的用法
  • ubuntu18.04安装wps
  • centos libcrypto.so.1.0.0
  • 虚拟机安装win8系统
  • linux服务器被尝试登录失败
  • javascript ?
  • css选择器类选择器
  • unity如何得到输入框的输入
  • 讯飞src
  • 编写批处理运行程序
  • shell编程教程
  • python 字典的字典
  • js function.call
  • unity中sendmessage
  • 税务举报电话号码
  • 北京地税税务总局官网
  • 车辆购置税是国家收还是地方收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设