$ VAL代表我的SQL如何用點數管理數值?
$sold = 50;
if ($val>$sold){
echo "true";
}
else
{
echo "false";
}
我得到假1,949.58。不知何故50大於1,949.58,這是因爲','的標誌。我需要一些關於如何管理這項權利的建議。 Thx
$ VAL代表我的SQL如何用點數管理數值?
$sold = 50;
if ($val>$sold){
echo "true";
}
else
{
echo "false";
}
我得到假1,949.58。不知何故50大於1,949.58,這是因爲','的標誌。我需要一些關於如何管理這項權利的建議。 Thx
$val
被php解釋爲字符串。進行比較時,它正在進行字符串比較,所以你不會得到你期望的結果。
您需要強制它們成爲浮點類型。看看http://php.net/manual/en/function.floatval.php具體是關於該功能的評論。
像這樣的東西應該工作:
function floatvalue($value) {
return floatval(preg_replace('#^([-]*[0-9\.,\' ]+?)((\.|,){1}([0-9-]{1,2}))*$#e', "str_replace(array('.', ',', \"'\", ' '), '', '\\1') . '.\\4'", $value));
}
您需要將這些值轉換爲浮動,而不是字符串。現在你正在做字符串比較而不是數字比較。以下內容將這些字符串轉換爲浮動值。
$val = parseFloat('1,949.58'.replace(/\,/g,""))
$sold = parseFloat('50')
.replace在解析爲Float之前從原始字符串中刪除「,」。
順便說一句,你是如何將你的$ val值存儲在數據庫中的?我的意思是什麼數據類型? – 2013-04-03 23:46:41
@MarCejas:如果它檢索到逗號,那麼它就是字符串類型之一(varchar/char)。 – NotMe 2013-04-04 00:01:02
@ChrisLive耶,我知道。我只是仔細檢查,爲什麼他在varchar中存儲數字?建議將這些存儲爲雙倍。 – 2013-04-04 02:31:16