位置: 编程技术 - 正文

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

  • 印花税申报表计税依据怎么填
  • 利润表中利息费用包括什么
  • 认缴后怎么才算实缴
  • 支付残疾人保证金的账务处理
  • 开办费抵扣多少企业所得税
  • 如何计算个别资金成本?
  • 公司向个人租房子怎么做账
  • 个人给公司垫付款起诉状
  • 股利怎么算出来的
  • 以前年度亏损本季度盈利所得税申报
  • 批发零售企业用什么软件好
  • 案例分析两个分公司转资金怎么做账?
  • 何为销项税额
  • 减免的土地出让金销项税额可以抵减吗
  • 纳税调整额怎么算出来的
  • 什么是往来科目
  • 以银行存款缴纳企业所得税所引起的变动为
  • 主营业务收入需要交增值税吗
  • 佣金的规定方法有哪些
  • 升级打装备的手游
  • 广告公司员工
  • 促销礼物
  • 支付代销手续费缴纳增值税吗
  • 其他应付款结转什么科目
  • 应对怯场的方法
  • 怎样识别?
  • php初学
  • 承兑汇票无法兑现的原因
  • 相关企业之间的竞争
  • 最快的计算机是量子计算机吗
  • 图像质量评价指标及方法 图像工程
  • html作业做网页
  • taskset 绑定cpu
  • 结转销售成本的凭证需要附件吗
  • 发票校验码二维码看不到了怎么查
  • 小微企业所得额如何计算
  • 工业企业成本核算方法
  • 年度一次性奖励扣税
  • 网络使用费属于什么会计科目
  • php 队列
  • 给境外公司代扣代缴税款
  • 其他应付款怎么做账
  • mysql innode
  • 清包工开发票需要注意事项
  • 公司裁员怎么补偿
  • 金税四期介绍 王石
  • 无形资产是什么?
  • 进项有效期
  • 外贸出口企业如何申报增值税
  • 厂家返利怎么入账
  • 劳动合同没有齐缝章
  • 机票电子行程单查询
  • 银行承兑贴现需要多久
  • 逾期贷款利息收入增值税和企业所得税纳税义务时间
  • 支付到期承兑汇票属于什么现金流量项目
  • 被选为工会代表
  • 企业代扣的个人所得税款收入属于哪个会计科目
  • 专项应付款余额转入资本公积的规定
  • 进项税额转出的几种情况
  • 预付款充值发票
  • 公司租的房子电费发票怎么开
  • mysql详细介绍
  • mysql的三种查询方式
  • windowsxp忘记密码了怎么办简单点
  • 什么是微软软件
  • executor进程
  • 在苹果电脑mac上怎么下载
  • xp系统修复怎么操作
  • mac光盘无法退出怎么解决
  • win7系统电脑开机后直接进入系统修复怎么办
  • win7打开软件总提示错误怎么解决
  • win8玩游戏
  • cocos2dx4.0教程
  • 使用jquery实现的项目
  • 怎样从零开始
  • 用python编写程序
  • linux的cp和mv
  • javascript函数如何定义及其作用
  • 深圳代理记账公司赚钱吗
  • 2017企业所得税年度申报表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设