2014-04-02 83 views
-2

我有一個場景,我從總支付網關獲取響應。 Like 1250.00。現在我通過從數據庫中獲取的購物車價值進行交叉檢查。 問題是一段時間PHP ==不適用於Float值

if($cartTotal == $paymentTotal) 

失敗大部分的工作時間,但在某些時候,它會失敗。我不確定這個問題是什麼。

我試過trim, type casting, === strcmp但是某種程度上某些交易失敗了。我將類型的值轉換爲int,float,string。

任何人都可以指出我正確的方向嗎?任何幫助深表感謝。

+0

http://floating-point-gui.de – deceze

+0

@deceze我現在試試'bccomp'。謝謝。 – SAM

回答

0

您可以比較浮動的變量是這樣的:

if(abs($cartTotal-$paymentTotal) > 0.00001) 
-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; 
}