PHP ==不适用于Float值

时间:2014-04-02 11:04:43

标签: php comparison

我有一个场景,我从支付网关获得响应,我有总计。 像1250.00一样。现在我用我从数据库获得的购物车价值交叉检查这个总数。 问题是一段时间

if($cartTotal == $paymentTotal)

大部分时间都失败了,但在某些时候失败了。我不确定这个问题是什么。

我尝试了trim, type casting, === strcmp,但不知何故,某些交易失败了。我有类型将值转换为int,float,string。

有人能指出我正确的方向吗?任何帮助深表感谢。

2 个答案:

答案 0 :(得分:0)

你可以像这样比较浮点变量:

if(abs($cartTotal-$paymentTotal) > 0.00001)

答案 1 :(得分:-1)

逗号是可以搞乱PHP数字处理的一个例子

尝试使用此功能清除您的号码:

/**
 * Clean up any numbers
 * Remove any characters apart from numbers and point (.)
 * Then explicitly cast to a float
 * @param $amount
 * @return float
 */
function numberSanitise($amount)
{
    $amount = floatval(preg_replace('%[^0-9.]%', '', $amount));
    return $amount;
}