ywork2020.com

Title

浮動小数点数を丸める

目次 (INDEX)

round とは

ここで説明する round とは次の語句からなる PHP の関数です。
round
読み: ラウンド
意味: 丸い、円形の~

目次に戻る

round 関数の概要

この関数は、浮動小数点の数値を指定したモードで丸めます。

これは既定モードで使用した場合は、単純に四捨五入した数値を返しますが、 既定モード以外の 3つのモードを設定した場合は、得られる結果はそれぞれのモードの仕様によって異なることに留意してください。

目次に戻る

構文

サンプルを見る前に構文を確認しておきます。

$roundNumber = round(floatNumber [,intPrecision [, intMode ]])
  • floatNumber: round の対象となる浮動小数点型の数値です。

  • intPrecision: 小数点の第何位で floatNumber を丸めるかを指定します。省略した場合は 0 が既定です。

  • intMode: 数値の丸めモードを指定します。これは 1 ~ 4 の数値か、それに対応する以下の定数で指定します。省略した場合は 1 が既定です。
  • 数値定数意味
    1 PHP_ROUND_HALF_UP 端数が 5 の場合、ゼロから離れる方向に丸めます。 1.5 は 2 に、そして -1.5 は -2 となります。
    2 PHP_ROUND_HALF_DOWN 端数が 5 の場合、ゼロに近づく方向に丸めます。 1.5 は 1 に、そして -1.5 は -1 になります。
    3 PHP_ROUND_HALF_EVEN 端数が 5 の場合、もっとも近い偶数に丸めます。 1.5 や 2.5 は 2 になります。
    4 PHP_ROUND_HALF_ODD 端数が 5 の場合、もっとも近い奇数に丸めます。 1.5 は 1 に、そして 2.5 は 3 になります。

目次に戻る

サンプルコードと実行結果

この関数は、構文でいう intMode の部分が理解しにくいと思いましたので、 その部分を一通りのパターンでサンプルを作成しました。詳細については構文の表を参照していただきたいのですが、 これは 数値で指定しても良いし、定数で指定しても良いということです。

構文の intPrecision の部分は 0 が小数点第一位を指しています。 つまり、その位の値を切り上げ、または切り捨てするわけですが、話がややこしくなるのが 5 の数値をどのように扱うかということです。 この部分をどう扱うかを設定するのが前述している intMode の部分になるわけです。

サンプルコード: HTML ( 拡張子は .php )
<body>
<?php
	... 
?>
</body>
  • 02: <?php (php のコードを記述するための開始タグです。)
  • 03: ... (この行は [ サンプルコード: PHP ] の内容の部分です。)
  • 04: ?>(php の記述を終了するための終了タグです。)
  • ここでは HTML ドキュメントの body 要素内に php の開始タグと終了タグを置いていますが、 開始タグと終了タグはドキュメントのどの部分に設置しても構いませんし、ドキュメント内の複数の場所に分けて記述しても問題ありません。 また、HTML ドキュメントとしてではなく、純粋に php のコードのみを記述しても構いません。 ただし、どの記述方法であろうともファイルの拡張子は .php であることが必要です。
サンプルコード: PHP
<?php
	$floatNumber = 5555.5555;
	echo( round( $floatNumber, -3, 4 ) . "<br>");
	echo( round( $floatNumber, -2, 3 ) . "<br>");
	echo( round( $floatNumber, -1, 2 ) . "<br>");
	echo( round( $floatNumber, 0, PHP_ROUND_HALF_UP ) . "<br>");
	echo( round( $floatNumber, 1, 2 ) . "<br>");
	echo( round( $floatNumber, 2, 3 ) . "<br>");
	echo( round( $floatNumber, 3, 4 ) . "<br>");
?>
実行結果:
$floatNumber = 5555.5555
6000
5600
5560
5556
5555.6
5555.56
5555.555

目次に戻る