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