2012-10-14 37 views
0

我在腳本中有用戶輸入 - $_POST['money']並且我想確認它實際上是2位小數位的浮點數。檢查變量是否有最大2位小數位浮點數

我的計劃是$money = (float)@$_POST['money'],在這種情況下,如果輸入非數字,它會將$money設置爲零。但是當用戶輸入類似5.234的東西時,可能會發生這種情況,在這種情況下,我也想把錢設置爲零。

我不想要explode或類似的東西棘手,我希望有一個這樣做的有效方式。

整數也很好,因爲它是一個有效的數量。

回答

0

我選擇使用此代碼:

$money = (float)(@$_POST['money']/0.01) <> (int)(@$_POST['money']/0.01) ? 0 : (float)@$_POST['money']; 

如果您有更好的解決方案,請發佈。

+0

已經選擇,因爲它只使用數學,而不是其他功能(除了鑄造) – Drahcir

+0

只有不夠好,如果你對地點的數量不感興趣......只是不喜歡使用'@' – Baba

+0

@Baba:我是感興趣的地方,我已經測試,這將只適用於地方<= 2,其他任何將導致0這是我需要的地方。 – Drahcir

0

檢查這裏:

http://php.net/manual/ro/function.is-float.php

這裏

http://php.net/manual/en/function.number-format.php

或使用該功能

function is_deccount($number,$decimal=2){ 
    $m_factor=pow(10,$decimal); 
    if((int)($number*$m_factor)==$number*$m_factor) 
     return true; 
    else 
     return false; 
} 
+0

謝謝,但我不確定這會有所幫助。我想要做的就是在不是有效金額的情況下設置'$ money = 0',例如$ _POST ['money'] = 5.234'這是一個有效的浮動但不是金錢的情況。 – Drahcir

+0

你可以使用該功能 – 2012-10-14 16:13:16

+0

好的,謝謝,會嘗試 – Drahcir