QQ 1640076782

2009年09月29日

php 浮点数值比较问题

Filed under: past — 标签:, — past @ 10:03 上午

今天早上收到客户留言,说运费有问题,马上查看了代码,确实是有问题。
将 $total_weight 原样输出,得到其类型是 float。
如下面代码,$total_weight 为 3.12 时,按道理应该执行 if 里面的内容,
可是实际执行了 else 内的内容。

//0.5 kg内 $16, 如超过 0.5kg,每 kg 增加 $10
if ($total_weight > 0.5){
$freight = 16 + ($total_weight-0.5)*10;
$freight = $freight * $cur_dollor[0];    //外贸建站多货币
}else {
if ($totalprice>0) {
$freight = 16 * $cur_dollor[0];    //外贸建站多货币
}else {
$freight = 0;
}
}

在php中尽可能不要进行浮点值比较,因为他们都是近似值,所以他们和你们的期望值不太一致,可能会让你很失望
这取决于浮点数的确切实现方式,正确的做法是 round(); 把他们舍入到最近的整数值。