位置: 编程技术 - 正文

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

  • 单独计税的年终奖怎么算
  • 金蝶专业版仓库反审核怎么做
  • 活动经费属于什么费用
  • 前一年的未分配利润属于什么科目
  • 个人收到利息要交增值税吗为什么
  • 个税超过部分征税还是全部
  • 专用发票网上勾选不了
  • 金蝶kis旗舰版使用手册
  • 新注册公司开银行卡流程
  • 收到应收的货款的会计分录
  • 招待费的进项
  • 企业进货不收发票怎么做帐?
  • 进料余料结转的征免方式
  • 营改增后购置设备进项税抵扣怎么做?
  • 企业销售额达到多少交企业所得税
  • 以前年度发生的费用
  • 个人所得税的申报税额是什么意思
  • 退税文件提醒怎么看
  • 个体户超过3万怎么纳税
  • 处于汇总期
  • 高新技术企业必须要有研发费用吗
  • 坏账准备的计提是什么意思
  • 全年累计应税所得额
  • 主营业务税金及附加包括什么
  • 兼职人员个税起征点
  • 本月无生产,有折旧怎么办
  • 公司注销帐上的钱取出来要交税吗
  • Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
  • mysql 数据源
  • s24evmon.exe - s24evmon是什么进程 有什么用
  • 在建工程主要包括哪些
  • 一般纳税人普通发票怎么交税
  • app制作公司开发一个app的价格
  • 个人非货币性资产投资个人所得税
  • 白条入账会计要负刑事责任吗
  • php addslashes函数
  • php缓存技术和静态化
  • php的session
  • 搬迁补偿费属于什么费
  • 补交去年增值税怎么做账
  • 购车哪些费用可以免
  • 研发费用范围归集不正确
  • 其他应收款个人挂账很大该怎么处理
  • 年初结转增值税怎么算
  • 外包员工食堂怎么做账
  • MicrosoftSQLserver2014
  • 定期定额自行申报表
  • 个体户个税计算公式
  • 科技公司技术服务费税率
  • 企业付美金外汇要交税吗
  • 网银数字证书年费
  • 法人向公司账户打款
  • 印花税计入税金及附加科目吗
  • 企业信息联网核查系统的意义
  • 抵扣联明细没认证如何申报
  • 产品销售的账务处理办法
  • 转账给个人账户
  • 销售退回的账务处理红字
  • 采购技术服务费计取
  • 注销股本对所有股票影响
  • SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决
  • 微软补丁修复时出现蓝屏现象
  • win7桌面图标无法拖到任务栏
  • 开启电脑上帝模式
  • win8的系统
  • centos 6.6安装教程
  • u盘做pe后还能存储吗
  • windows7如何取消锁屏密码
  • win8系统如何关机
  • lua struct
  • js闭包的应用
  • 照片墙安装教程
  • ftp命令操作
  • 第三章之一、使用二手设备降低生产成本读后感
  • unity3d怎么编程
  • 在浏览器中打开是什么意思
  • 从重置手
  • 组件中js可以做什么
  • 深圳12366怎么转人工
  • 三门峡哪个小区是原火葬场
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设