小数点以下が0なのに小数点表記をしてしまう場合の対処法です。
PHPで小数点以下が0の場合に整数で表示するには、number_format()
関数や条件分岐を使用する方法があります。以下はその例になります。
方法 1: 条件分岐を使う
function formatNumber($num) {
return (intval($num) == $num) ? intval($num) : $num;
}
echo formatNumber(123.00); // 123
echo formatNumber(123.45); // 123.45
intval($num) == $num
の条件で、小数点以下がないかゼロの場合は整数として表示し、それ以外はそのまま表示します。
方法 2: number_format() を使う
number_format()
関数を使用して小数点以下の桁数を指定し、0
なら小数点を省略します。
function formatNumber($num) {
return ($num == floor($num)) ? number_format($num, 0) : $num;
}
echo formatNumber(123.00); // 123
echo formatNumber(123.45); // 123.45
この方法では、floor()
関数を使って整数値かどうかを判定しています。
方法 3: rtrim() を使う
文字列として扱い、小数点以下の余計なゼロを削除する方法です。
function formatNumber($num) {
return rtrim(rtrim(sprintf('%.8F', $num), '0'), '.');
}
echo formatNumber(123.00); // 123
echo formatNumber(123.4500); // 123.45
sprintf()
で数値を文字列に変換し、rtrim()
で末尾の不要なゼロやドットを削除しています。
方法 4: 正規表現を使う
以下のコードは、正規表現で末尾の不要な .0
を削除します。
function formatNumber($num) {
// 数値を文字列に変換
$strNum = (string)$num;
// 正規表現で .0 または .00.. を削除
return preg_replace('/\.0+$/', '', $strNum);
}
echo formatNumber(123.00); // 123
echo formatNumber(123.4500); // 123.45
echo formatNumber(123); // 123
正規表現の説明
/\.0+$/
: この正規表現は、文字列の末尾にある「.
とそれに続く1つ以上の0
」を見つけ、それを削除します。\.
: 小数点を表します。0+
: 1つ以上の「0」を表します。$
: 文字列の末尾を示します。
この方法では、小数点以下に「0」が続いている場合にそれらを削除し、整数部分だけを表示します。また、小数点以下に値がある場合は、そのまま表示されます。