【PHP8.x】round関数の使い方

round関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

round関数は数値を指定された精度で丸めることを実行する関数です。この関数は、与えられた浮動小数点数(小数を含む数値)を、指定した小数点以下の桁数、または小数点より上の桁数で丸める際に使用されます。

この関数には、丸めたい数値を表す$num、丸める桁数を指定するオプションの$precision、そして丸めモードを指定するオプションの$modeの三つの引数を渡すことができます。$precision0の場合、最も近い整数に丸められます。正の整数を指定すると小数点以下の桁数で丸め、例えば1を指定すると小数点以下第1位まで、2を指定すると小数点以下第2位まで丸めます。負の整数を指定すると小数点より上の桁数で丸め、例えば-1を指定すると一の位で丸め、-2を指定すると十の位で丸めることになります。

丸めモードを指定する$mode引数には、いくつかの定数を使用できます。デフォルトはPHP_ROUND_HALF_UPで、これはちょうど中間の値(例えば2.5など)を切り上げる動作をします。その他にも、PHP_ROUND_HALF_DOWNは中間の値を切り捨て、PHP_ROUND_HALF_EVENは中間の値を最も近い偶数に丸め、PHP_ROUND_HALF_ODDは最も近い奇数に丸めるなどのモードが用意されています。

round関数は、丸められた結果の数値を浮動小数点数として返します。例えば、round(3.14159, 2)とすると3.14が返され、round(1234.56, -2)とすると1200が返されます。数値計算において、特定の精度で数値を扱う必要がある場合に非常に便利な関数です。

構文(syntax)

1round(3.14159);

引数(parameters)

int|float $num, int $precision = 0, RoundingMode|int $mode = \RoundingMode::HalfUp

  • int|float $num: 丸めたい数値(整数または浮動小数点数)
  • int $precision = 0: 小数点以下の桁数を指定します。デフォルトは0で、整数に丸められます。
  • RoundingMode|int $mode = \RoundingMode::HalfUp: 丸めモードを指定します。デフォルトはHalfUp(四捨五入)です。

戻り値(return)

float

指定された数値を指定された桁数に丸めた浮動小数点数を返します。

サンプルコード

PHP round関数で数値を切り上げる

1<?php
2
3/**
4 * PHPのround関数を使って、数値を「切り上げ」(正の無限大方向へ丸める)る方法を示します。
5 * キーワード「php roundup」に対応する挙動です。
6 * PHP 8以降では、丸めモードをより明確に指定するためにRoundingMode enumが導入されています。
7 */
8function demonstratePhpRoundUp(): void
9{
10    echo "--- round() 関数で正の無限大方向へ丸める (\\RoundingMode::Up) ---\n";
11
12    // 正の数を切り上げる例
13    $num1 = 3.14;
14    // 小数点以下を切り上げ、整数にする (結果: 4)
15    $rounded1 = round($num1, 0, \RoundingMode::Up);
16    echo "round({$num1}, 0, \\RoundingMode::Up) => {$rounded1}\n";
17
18    $num2 = 3.8;
19    // 小数点以下を切り上げ、整数にする (結果: 4)
20    $rounded2 = round($num2, 0, \RoundingMode::Up);
21    echo "round({$num2}, 0, \\RoundingMode::Up) => {$rounded2}\n";
22
23    $num3 = 3.0;
24    // 既に整数なので、切り上げても値は変わらない (結果: 3)
25    $rounded3 = round($num3, 0, \RoundingMode::Up);
26    echo "round({$num3}, 0, \\RoundingMode::Up) => {$rounded3}\n";
27
28    // 負の数を切り上げる例
29    // 負の数では、「正の無限大方向へ丸める」とは0に近づく方向(絶対値が小さくなる方向)を意味します。
30    $num4 = -3.14;
31    // 小数点以下を切り上げ、整数にする (結果: -3)
32    $rounded4 = round($num4, 0, \RoundingMode::Up);
33    echo "round({$num4}, 0, \\RoundingMode::Up) => {$rounded4}\n";
34
35    $num5 = -3.8;
36    // 小数点以下を切り上げ、整数にする (結果: -3)
37    $rounded5 = round($num5, 0, \RoundingMode::Up);
38    echo "round({$num5}, 0, \\RoundingMode::Up) => {$rounded5}\n";
39
40    // 小数点以下の特定の桁数で切り上げる例
41    $num6 = 3.14159;
42    // 小数点以下2桁目で切り上げる (結果: 3.15)
43    $rounded6 = round($num6, 2, \RoundingMode::Up);
44    echo "round({$num6}, 2, \\RoundingMode::Up) => {$rounded6}\n";
45
46    $num7 = -3.14159;
47    // 小数点以下2桁目で切り上げる (結果: -3.14)
48    $rounded7 = round($num7, 2, \RoundingMode::Up);
49    echo "round({$num7}, 2, \\RoundingMode::Up) => {$rounded7}\n";
50}
51
52// サンプルコードを実行します。
53demonstratePhpRoundUp();
54

PHPのround関数は、指定された数値を丸めるために使用される標準関数です。特に「切り上げ」(正の無限大方向へ丸める)を行う場合、PHP 8以降では\RoundingMode::Upという丸めモードを利用します。このモードは、数値が正の場合は通常の切り上げ(例: 3.14が4に)、負の場合は0に近づく方向への切り上げ(例: -3.14が-3に)となります。

関数の最初の引数$numには丸めたい数値を指定します。続く$precision引数で丸める小数点以下の桁数を指定し、0を指定すると整数に丸められます。正の値を指定すると小数点以下の桁数が、負の値を指定すると整数部分の桁数が対象となります。そして、$mode引数に\RoundingMode::Upを指定することで、常に正の無限大方向へ丸める動作が適用されます。

例えば、3.143.8を整数に切り上げるとどちらも4になります。負の数-3.14-3.8を整数に切り上げると、0に近づく方向である-3になります。また、3.14159を小数点以下2桁で切り上げると3.15に、-3.14159を小数点以下2桁で切り上げると-3.14となります。round関数の戻り値は常にfloat型で、丸められた数値が返されます。これにより、様々な要件に応じた数値の切り上げ処理を正確に実現できます。

PHPのround関数は、デフォルトでは一般的な四捨五入を行います。キーワード「php roundup」のように正の無限大方向へ切り上げたい場合は、第三引数に\RoundingMode::Upを必ず指定してください。この\RoundingMode enumはPHP 8以降で導入され、丸めモードをより明確に指定できます。また、負の数を\RoundingMode::Upで切り上げる場合、0に近づく方向に丸められるため、例えば-3.14-3になります。これは直感と異なる場合があるため特に注意が必要です。round関数の戻り値は常にfloat型となります。

PHP round関数で数値を四捨五入する

1<?php
2
3/**
4 * PHPのround関数を使った基本的な四捨五入の例を示します。
5 *
6 * round関数は、デフォルトのRoundingMode::HalfUp(一般的な四捨五入)で動作します。
7 * 第二引数 $precision で小数点以下の桁数を指定できます。
8 */
9function demonstrateRoundingExamples(): void
10{
11    echo "--- 基本的な四捨五入 (小数点以下を丸めて整数に) ---" . PHP_EOL;
12    // 小数点以下が0.5未満は切り捨て
13    $num1 = 3.4;
14    echo "{$num1} を四捨五入すると: " . round($num1) . PHP_EOL; // 結果: 3
15
16    // 小数点以下が0.5以上は切り上げ
17    $num2 = 3.5;
18    echo "{$num2} を四捨五入すると: " . round($num2) . PHP_EOL; // 結果: 4
19
20    $num3 = 3.6;
21    echo "{$num3} を四捨五入すると: " . round($num3) . PHP_EOL; // 結果: 4
22
23    echo PHP_EOL;
24
25    echo "--- 指定した小数点以下の桁数で四捨五入 ---" . PHP_EOL;
26    // 小数点以下第2位で四捨五入 (第1位まで残す)
27    $num4 = 123.456;
28    echo "{$num4} を小数点以下第2位で四捨五入すると (第1位まで): " . round($num4, 1) . PHP_EOL; // 結果: 123.5
29
30    $num5 = 123.446;
31    echo "{$num5} を小数点以下第2位で四捨五入すると (第1位まで): " . round($num5, 1) . PHP_EOL; // 結果: 123.4
32
33    // 小数点以下第3位で四捨五入 (第2位まで残す)
34    $num6 = 7.892;
35    echo "{$num6} を小数点以下第3位で四捨五入すると (第2位まで): " . round($num6, 2) . PHP_EOL; // 結果: 7.89
36
37    $num7 = 7.896;
38    echo "{$num7} を小数点以下第3位で四捨五入すると (第2位まで): " . round($num7, 2) . PHP_EOL; // 結果: 7.90
39
40    echo PHP_EOL;
41
42    echo "--- 負のprecisionで整数部分を四捨五入 ---" . PHP_EOL;
43    // 1の位で四捨五入 (10の位まで残す)
44    $num8 = 1234.5;
45    echo "{$num8} を1の位で四捨五入すると (10の位まで): " . round($num8, -1) . PHP_EOL; // 結果: 1230
46
47    $num9 = 1235.5;
48    echo "{$num9} を1の位で四捨五入すると (10の位まで): " . round($num9, -1) . PHP_EOL; // 結果: 1240
49
50    // 10の位で四捨五入 (100の位まで残す)
51    $num10 = 5678.9;
52    echo "{$num10} を10の位で四捨五入すると (100の位まで): " . round($num10, -2) . PHP_EOL; // 結果: 5700
53}
54
55// 関数を実行して結果を表示します
56demonstrateRoundingExamples();
57

PHPのround関数は、与えられた数値を指定された方法で四捨五入するために使用されます。この関数は、丸めたい数値である $num、小数点以下の桁数を指定する $precision、そして丸めモードを設定する $mode の三つの引数を取ります。デフォルトでは $precision0 に設定されており、数値を最も近い整数に丸めます。この際の丸めモードは、一般的な四捨五入である RoundingMode::HalfUp が適用され、例えば 3.43 に、3.53.64 に丸められます。

$precision に正の整数を指定することで、小数点以下の特定の桁数で四捨五入を行うことができます。例えば、round(123.456, 1) と指定すると、小数点以下第2位で四捨五入が行われ、結果は 123.5 となります。同様に、round(123.446, 1) であれば 123.4 となります。

また、$precision に負の整数を指定することも可能です。これにより、整数部分を特定の桁数で丸めることができます。例えば、round(1234.5, -1) は1の位で四捨五入を行い、結果は 1230 となります。round(1235.5, -1) の場合は 1240 となります。この関数は常に float 型の値を戻り値として返しますので、整数に丸められた場合でも浮動小数点数として扱われます。

PHPのround関数は、デフォルトで一般的な四捨五入(0.5は切り上げ)を行います。第二引数のprecisionで小数点以下の桁数を指定できますが、ここに負の値を指定すると、整数部分を丸めることができます。例えば、-1を指定すると1の位を四捨五入して10の位まで残し、-2だと10の位を四捨五入して100の位まで残します。関数は常にfloat型の値を返します。たとえ丸めた結果が整数値であってもfloat型で返されるため、戻り値の型を意識した処理を行うように注意してください。

関連コンテンツ