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 メソッド:複雑な答えにとらわれすぎて、単純な答えを見失うことがあります。これが少し遅れていることは承知していますが、多くの不要なコードを吹き飛ばす可能性があります。これは、価格の小数点以下 2 桁が保証されている場合にのみ使用してください。

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

これにより、通貨の配置について心配する必要がなくなります。ただし、覚えておいてください: これは、小数点以下 2 桁の価格設定形式が保証されている場合にのみ有効です。

于 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 に答える