«

php 精度计算问题

时间:2024-2-18 13:24     作者:韩俊     分类: 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 — 将两个高精度数字相减

标签: php php教程

热门推荐