【PHP】小数点以下が0の場合に整数で表示する方法

PHP

小数点以下が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」が続いている場合にそれらを削除し、整数部分だけを表示します。また、小数点以下に値がある場合は、そのまま表示されます。

著者プロフィール
この記事を書いた人
ロジャー

Webアプリ開発を20年近く経験し、管理職なった今も時々ソースをいじるメインは営業職の管理者。もうすぐ40代。最近は、AIを活用して少しでも仕事やプライベートを面白くしていきたいと考えているおっさんです。困った事もAIなら解決してくれるはず!?

ロジャーをフォローする
PHPシステム開発
ロジャーをフォローする
タイトルとURLをコピーしました