如何用点数管理数值?

时间:2013-04-03 23:37:21

标签: php numbers comma

$ value表示来自我的sql

的1,949.58
 $sold = 50;
    if ($val>$sold){
    echo "true";
    }
    else
    {
    echo "false";
    }

我弄错了。不知何故50大于1,949.58这是因为','符号。我需要一些关于如何正确管理的建议。 THX

2 个答案:

答案 0 :(得分:0)

php将{p> $val解释为字符串。在进行比较时,它正在进行字符串比较,因此您无法获得预期的结果。

您需要强制它们成为浮点类型。请看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)); 
} 

答案 1 :(得分:0)

您需要将这些值转换为浮点数而不是字符串。现在你正在进行字符串比较而不是数字比较。以下内容将这些字符串转换为浮动值。

$val = parseFloat('1,949.58'.replace(/\,/g,""))
$sold = parseFloat('50')

.replace在解析为Float之前从原始字符串中删除“,”。