龙空技术网

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

迷途大灰狼 57

前言:

当前大家对“php减法”大致比较关注,各位老铁们都需要了解一些“php减法”的相关资讯。那么小编同时在网络上搜集了一些对于“php减法””的相关资讯,希望我们能喜欢,看官们一起来了解一下吧!

背景

在项目碰到比较小的金额计算问题,然后就碰上了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 modulusbcscale — 设置所有bc数学函数的默认小数点保留位数bcsqrt — 任意精度数字的二次方根bcsub — 2个任意精度数字的减法

标签: #php减法 #php精度问题 #php高精度函数