2
4

2 回答 2

3
<?php
$num = 126.54;
echo $num === round($num, 0) ? round($num, 0) : $num;
?>

这可以用来吐出你的号码。至于货币头寸,您可以根据货币设置条件。

完整答案:这处理所有货币类型并将它们放置在正确的位置。享受:

<?php
$symbols = array('€', '$');
$price = '$126.56';

foreach($symbols as $needle)
{
    if($pos = strpos($price, $needle) && $pos !== false)
        break;
}

$num = floatval(str_replace($symbols, '', $price));
$num = $num === round($num, 0) ? round($num, 0) : $num;

echo $pos ? $num.substr($price, -1) : substr($price, 0, 1).$num;
?>

KISS 方法:有时,我们被复杂的答案所吸引,而忽略了简单的答案。我知道这有点晚了,但它可能会吹走很多不必要的代码。仅当您保证定价中有两位小数时才使用此选项:

<?php
$rounded = str_replace('.00', '', $price);
?>

这将有效地消除任何担心货币放置的需要。但请记住:这仅适用于您的情况,前提是您保证定价格式精确到小数点后两位。

于 2012-05-02T20:51:55.153 回答
0

这应该可以帮助您:

更新

误读了您的原始帖子,并没有意识到您想保留货币符号。这应该可以很好地和简单地完成技巧,它是什么货币符号或它在哪里都没有关系。

// Won't change this
$number = '$200.00';
echo preg_replace('/([.0-9]+)(€)/e','round(\'$1\',0)."$2"',$number);

// Will change this
$number = '200.00€';
echo preg_replace('/([.0-9]+)(€)/e','round(\'$1\',0)."$2"',$number);
于 2012-05-02T21:20:09.407 回答