php中float(浮点数)比较的问题

发布时间:2020-01-03编辑:脚本学堂
分享下php编程中float(浮点数)比较的问题,掌握下php浮点数的比较方法,有需婪的朋友参考下。

你了解下php中两个浮点数的比较吗?
不晓得从哪里听来的一个“不要用等号去比较浮点数”的“真理”,自己平时也在用,好像没有出现啥问题,可这次问题总算是来了。

例子:
 

复制代码 代码示例:
<?php
$sum = "12300.00";
$a   = "10000.30";
$b   =  "2000.30";
$c   =   "299.40";
 
$sum = (float) $sum;
$s = (float) ($a+$b+$c);
var_dump($sum, $s);
var_dump($sum==$s);
 

结果是:
float(12300)
float(12300)
bool(false)
后来才知道在PHP中,要比较两个浮点数的大小,可以用bccomp(参数1,参数2,小数位)来比较。
 

复制代码 代码示例:
<?php
$sum = "12300.00";
$a   = "10000.30";
$b   =  "2000.30";
$c   =   "299.40";
 
$sum = (float) $sum;
$s = (float) ($a+$b+$c);
var_dump($sum, $s);
var_dump(bccomp($sum,$s,2));

结果:
float(12300)
float(12300)
int(0) // 0表示两个浮点数值相等
bccomp函数具体用法参与php手册