0

数値に小数が 1 つまたは 2 つあるかどうかを確認する方法を知りたいのですが、たとえば 12,9 のように小数が 1 つしかない場合は、数値に 0 を追加してエコーすると、12,90 のようになります。

<?php
$number = '12,9';

if $number //has 2 decimals // {
echo $number; }
else { 
echo $number.'0';
}
endif;
?>

それを適切に行う方法がわかりません。助けていただければ幸いです。ありがとう

4

4 に答える 4

4

入力が.(ドット) 区切りの 10 進数の場合は、次のように使用できますnumber_format()

number_format('12.9', 2);

NumberFormatterまたは、複数のロケールまたは小数点記号にカンマを使用した数値をサポートする必要がある場合は、このクラスを使用できます。そのような:

$formatter = new NumberFormatter('de_DE', NumberFormatter::DECIMAL);
$formatter->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, 2);
$formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
echo $formatter->format($formatter->parse('12,9'));

: の使用には拡張子がNumberFormatter必要です。intlシンプルな .debian ベースのシステムに追加できますsudo apt-get install php5-intl

于 2013-02-21T14:21:44.203 に答える
1

投稿したように数値が常にフォーマットされていることが確実な場合は、次のようにします。

number_format(str_replace(',', '.', '12,9'), 2, ',', '.');
于 2013-02-21T14:27:54.087 に答える
1

必要なのは number_format 関数 http://www.php.net/manual/en/function.number-format.phpです

于 2013-02-21T14:21:15.827 に答える
1

PHP は厳密に型指定されていないため、次のようにすることができます。

$parts = explode(",", $number);
$num_decimals = strlen($parts[1]);

if ($num_decimals == 2) //has 2 decimals // {
  echo $number; 
} else { 
  echo $number.'0';
}
于 2013-02-21T14:23:29.780 に答える