首页 > 其他 > 详细

不要用等号去比较浮点数的真理

时间:2014-01-21 21:32:53      阅读:397      评论:0      收藏:0      [点我收藏+]

  “不要用等号去比较浮点数”的“真理”--有时候浮点数比较不会出问题,但是并不是所有情况的浮点数比较都是对的,请看下面例子。

bubuko.com,布布扣
<?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);
?>
bubuko.com,布布扣

结果是:
float(12300)
float(12300)
bool(false)


*其实要比较两个浮点数的大小,可以用bccomp(参数1,参数2,小数位)来比较。

bubuko.com,布布扣
<?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));
?>
bubuko.com,布布扣

结果是:
loat(12300)
float(12300)
int(0) // 0表示两个浮点数值相等

不要用等号去比较浮点数的真理

原文:http://www.cnblogs.com/thinksasa/p/3528788.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!