MENU

【PHP】小数点数を整数に丸める関数まとめ(四捨五入/切り上げ/切り捨て)

プログラムを書いていると、
「小数点を整数に丸めたい」という場面がよくあります。

例えば以下のようなケースです。

  • レビュー評価を整数にしたい
  • 金額計算で小数点を処理したい
  • 表示用に数値を丸めたい

PHPでは、小数点の丸め方によって以下の関数を使い分けます。

丸め方関数
切り上げceil()
切り捨てfloor()
四捨五入round()

この記事では、それぞれの関数の使い方と、覚えやすいイメージも紹介します。

目次

切り上げ:ceil()

ceil()常に切り上げをする関数です。

echo ceil(3.1); // 4
echo ceil(3.5); // 4
echo ceil(3.9); // 4

結果

数値結果
3.14
3.54
3.94

イメージ

「天井まで持ち上げる」

ceilceiling(天井)の略です。

つまり

数値を天井まで押し上げる

というイメージです。

3.1 → 天井 → 4

切り捨て:floor()

floor()常に切り捨てをする関数です。

echo floor(3.1); // 3
echo floor(3.5); // 3
echo floor(3.9); // 3

結果

数値結果
3.13
3.53
3.93

イメージ

floorfloor(床)を意味します。

つまり

数値を床まで落とす

というイメージです。

3.9 ↓ 床 ↓ 3

四捨五入:round()

round() は、最も一般的な四捨五入を行う関数です。

echo round(3.2); // 3
echo round(3.5); // 4
echo round(3.8); // 4

結果

数値結果
3.23
3.54
3.84

ポイント

小数点が

  • 0〜4 → 切り捨て
  • 5〜9 → 切り上げ

になります。

小数点の桁数も指定できる

echo round(3.14159, 2); // 3.14

第2引数に桁数を指定すると、その桁で四捨五入できます。

覚え方

丸め関数は建物で覚えると一発で覚えられます。

関数イメージ意味
ceil天井上に上げる
floor下に落とす
round四捨五入普通の丸め

つまり

  • ceil → 天井
  • floor → 床

これだけ覚えれば忘れません。

round() と number_format() の違い

PHPで小数点を扱うときに、もう一つよく使う関数があります。

それがnumber_format()です。

しかしこの関数は、round()目的が違うので注意が必要です。

関数目的
round()数値を四捨五入する
number_format()数値を見やすく表示する

round() は「計算用」

round()数値として丸める関数です。

$score = 3.56;
$result = round($score, 1);
echo $result;

結果

3.6

この値は数値(float)なので、そのまま計算に使うことができます。

$price = round(99.8);
$total = $price * 2;

number_format() は「表示用」

number_format()表示を整える関数です。

$score = 3.5;
echo number_format($score, 1);

結果

3.5

また、以下のような桁区切りにも使えます。

echo number_format(1234567);

結果

1,234,567

実は round() と動きも少し違う

例えば5を小数点1桁で表示するとき。

round()

echo round(5, 1);

結果

5

number_format()

echo number_format(5, 1);

結果

5.0

number_format()指定した桁数を必ず表示します。

もう一つ重要な違い(型)

実はこの2つは、返り値の型も違います。

関数
round()数値(float)
number_format()文字列(string)

$a = round(3.5);
$b = number_format(3.5, 1);
var_dump($a);
var_dump($b);

結果

float(4)
string(3) "3.5"

つまり

  • round()計算用
  • number_format()表示用

と覚えるのが一番わかりやすいです。

まとめ

PHPで小数点を丸める関数は次の3つです。

丸め方関数
切り上げceil()
切り捨てfloor()
四捨五入round()

覚え方のポイントは建物のイメージです。

  • ceilceiling(天井) → 上へ
  • floorfloor(床) → 下へ

このイメージで覚えておくと、実装時に迷わなくなります。

そして、round()number_format()の違いは以下です。

関数目的
round()数値を四捨五入する数値(float)
number_format()数値を見やすく表示する文字列(string)

すべての関数の役割や違いを理解し、開発効率を上げていきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Muta Blog運営者はデザインも開発もやるWebエンジニアです。
本ブログでは現場で培ったWebの知識やノウハウを発信しています。
Web制作歴5年/現在ReactやRubyを中心に幅広く学習中/

目次