您的位置 首页 php

php 高精度计算的问题,例如9.95+0.01

背景

在项目碰到比较小的金额计算问题,然后就碰上了9.95+0.01的这样的数值,发现这个在js和php中直接用+号计算结果都是9.959999999999999,而不是9.96

         $a=9.95;
        $b= 0.01;
        $count=$a+$b; //这里输出是9.959999999999999    
        //正确应该是9.96才对
        

解决方案

查了一下手册发现

php是有高精度计算函数

         $a=9.95;
        $b= 0.01;
        $count= bcadd($a,$b,2); // 输出9.96  

当我们需要进行涉及小数位的高精度计算时候建议使用高精度函数去进行计算

  • bcadd — 2个任意精度数字的加法计算
  • bccomp — 比较两个任意精度的数字
  • bcdiv — 2个任意精度的数字除法计算
  • bcmod — 对一个任意精度数字取模
  • bcmul — 2个任意精度数字乘法计算
  • bcpow — 任意精度数字的乘方
  • bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
  • bcscale — 设置所有bc数学函数的默认小数点保留位数
  • bcsqrt — 任意精度数字的二次方根
  • bcsub — 2个任意精度数字的减法

文章来源:智云一二三科技

文章标题:php 高精度计算的问题,例如9.95+0.01

文章地址:https://www.zhihuclub.com/150457.shtml

关于作者: 智云科技

热门文章

网站地图