php 精度计算问题

 
更多

php精度计算的问题。

1、如下: var_export()打印时损失了精度。

$a = 0.7;
$b = 0.1;
$jia = $a + $b;
$jian = $a - $b;
$cheng = $a * $b;
$chu = $a / $b;
 
var_export($jia);    //0.79999999999999993
var_dump($jia); //float(0.8)
echo $jia;  //0.8
 
var_export($jian);    //0.59999999999999998
var_dump($jian);    //float(0.6)
echo $jian; //0.6
 
var_export($cheng);    //0.069999999999999993
var_dump($cheng);   // float(0.07)
echo $cheng; //0.07
 
var_export($chu);     //6.9999999999999991
var_dump($chu);     //float(7)
echo $chu;  //7

2、使用PHP bc类函数

$jia = bcadd($a, $b, 1);    //$a+$b,保留1位小数
$jian = bcsub($a, $b, 2);   //$a-$b,保留2位小数
$cheng = bcmul($a, $b, 3);  //$a*$b,保留3位小数
$chu = bcdiv($a, $b, 3);    //$a/$b,保留3位小数
 
var_export($jia);    //'0.8'
var_export($jian);  //'0.60'
var_export($cheng); //'0.07'
var_export($chu);   //'7.000'

3、更多

bcadd — 将两个高精度数字相加

bccomp — 比较两个高精度数字,返回-1, 0, 1

bcdiv — 将两个高精度数字相除

bcmod — 求高精度数字余数

bcmul — 将两个高精度数字相乘

bcpow — 求高精度数字乘方

bcpowmod — 求高精度数字乘方求模,数论里非常常用

bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”

bcsqrt — 求高精度数字平方根

bcsub — 将两个高精度数字相减

打赏

本文固定链接: https://www.cxy163.net/archives/3297 | 绝缘体

该日志由 绝缘体.. 于 2019年12月09日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: php 精度计算问题 | 绝缘体
关键字: , , , ,

php 精度计算问题:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter