美文网首页
PHP中的浮点型数据计算之程序员脱发问题

PHP中的浮点型数据计算之程序员脱发问题

作者: 夜微凉_9afd | 来源:发表于2019-06-29 09:52 被阅读0次

先来问大家一个问题吧?带个迷之微笑的表情
1.2减1.2等于几?
我知道很多人一口就会说出答案,但是你先别着急说出来,往下看。

周六上班状态真的很差,一大早的坐地铁做过了站,出地铁站又走错了出口,更衰的是昨天写好的接口,一大早就出现了很让人难带晕的事情,当时我简直不敢相信自己的眼睛。

55e817b46205cd0c9c30c7f8d939aee.png

大家想的结果肯定跟我想的结果是一样的,可是,偏偏老天总是喜欢调戏你们这些不动脑子的
哈哈哈,他输出的结果竟然是2.2204~,我的天哪?竟然还越减越多了?又一次刷新了我小学毕业的三观啊!

ee709cb275925407163b3ba59792a0f.png

其实在计算机浮点数计算的时候往往会出现很多我们意料之外的结果。如果涉及到精确的数据计算,如业务数据计算,财务数据计算的时候,为了保持数据的精准度和正确性,我们可以采取以下方法解决:
第一种也是最简单的方法:

    通过乘100的方式转化为整数加减,然后在除以100转化回来……

第一种:使用number_format转化成字符串,然后在使用(float)强转回来……
第三种:php提供了高精度计算的函数库,实际上就是为了解决这个浮点数计算问题而生的。(但是对于记忆力不是很好的同学,看到这些函数是不是很头疼)

主要函数有:
bcadd — 将两个高精度数字相加
bccomp — 比较两个高精度数字,返回-1, 0, 1
bcdiv — 将两个高精度数字相除
bcmod — 求高精度数字余数
bcmul — 将两个高精度数字相乘
bcpow — 求高精度数字乘方
bcpowmod — 求高精度数字乘方求模,数论里非常常用
bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”
bcsqrt — 求高精度数字平方根
bcsub — 将两个高精度数字相减

说完了解决方案,我才用的方法是第一种:
通过乘100的方式转化为整数加减,然后在除以100转化回来

    //余额
    $balance = intval($total*100) - intval($arrivalTotal*100);
    //已提现
    $data['balance'] = $balance/100;

结果:

{
"code": "200",
"msg": "用户获取的返佣统计",
"data": {
    "total": 1.2,
    "balance": 0,
    "arrival_account": 1.2
}

}

最近头发掉的超级严重,谁有没有什么好的洗发水推荐的?

祝愿大家在程序员的道路上永远不掉头发!

相关文章

  • PHP中的浮点型数据计算之程序员脱发问题

    先来问大家一个问题吧?带个迷之微笑的表情1.2减1.2等于几?我知道很多人一口就会说出答案,但是你先别着急说出来,...

  • php变量和数据类型

    php中的变量 PHP中的变量声明 PHP中的变量的使用 PHP中的数据类型之整型 PHP数据类型之浮点类型和布尔...

  • PHP基础知识(1)

    1.列举php常用的数据类型 整数型 Integer 布尔类型 Boolean 浮点型 Float浮点型 字符数 ...

  • PHP学习笔记

    PHP数据类型 php有7种数据类型 : 整型 | 浮点型 | 字符串 | boolean | Null | 数组...

  • Z_HPC_存储

    计算密集型、浮点计算密集型、数据密集型、网络密集型 高性能计算和数据密集型计算的存储的差异? 根据应用领域的不同,...

  • 2018-08-23 day4-循环和分支

    1.数据类型转换 自动转换 整型与浮点型数计算转换为浮点型 整型与bool型(0和1)计算转换为整型 强制转换 语...

  • 浮点型计算的问题

    浮点型计算有时会出现十几位的小数点 解决方法: var a = 1.23, b = 4.745, digit = ...

  • 从0到1学习网络安全 【PHP基础-数据类型】

    PHP 数据类型 String(字符串), Integer(整型), Float(浮点型), Boolean(布尔...

  • php入门--数据类型

    php的数据类型如下:String(字符串), Integer(整型), Float(浮点型), Boolean(...

  • 基本数据类型

    一、什么是数据结构 在计算机中,数据结构是计算机中存储、组织数据的方式。 整型:int浮点型:float字符创: ...

网友评论

      本文标题:PHP中的浮点型数据计算之程序员脱发问题

      本文链接:https://www.haomeiwen.com/subject/fimucctx.html