【PHP】小数点以下の切り捨て、切り上げ、四捨五入の方法について

PHP

プログラムを書いていると、小数点以下の処理に時々ハマります…(*´Д`)

特に色んな言語を利用していると余計に混乱するので、備忘録としてまとめます。

PHPでは、小数点以下の処理(切り上げ、切り捨て、四捨五入)を行うための標準的な関数が用意されています。以下にそれぞれの方法を紹介します。

1. 切り上げ (ceil)

ceil 関数を使うと、数値を切り上げることができます。

$number = 3.14;
$result = ceil($number);  // 4

2. 切り捨て (floor)

floor 関数を使うと、数値を切り捨てることができます。

$number = 3.14;
$result = floor($number);  // 3

3. 四捨五入 (round)

round 関数を使うと、数値を四捨五入することができます。小数点以下の桁数を指定することもできます。

$number = 3.14;
$result = round($number);  // 3

$number2 = 3.75;
$result2 = round($number2);  // 4

// 小数点第2位まで四捨五入する場合
$number3 = 3.1459;
$result3 = round($number3, 2);  // 3.15

ただし、サンプルソースを見てわかるように、桁指定できるのround関数のみとなっているため、切り上げ、切り捨てを行う場合は一工夫必要。

改良版:桁数を指定して切り上げ (ceil)

$number = 3.14159;
$precision = 2;  // 小数点以下2桁を指定
$result = ceil($number * pow(10, $precision)) / pow(10, $precision);  // 3.15

改良版:桁数を指定して切り捨て (floor)

$number = 3.14159;
$precision = 2;  // 小数点以下2桁を指定
$result = floor($number * pow(10, $precision)) / pow(10, $precision);  // 3.14

このようにして、桁数を指定して ceilfloor を使うことが可能です。

何をしているかというと、まずその桁数に応じて数値を10のべき乗で掛けてから処理し、最後に元に戻すという方法を利用しています。

念のため、pow関数の説明も記載しておきます。

pow() は、PHPで使用できる関数の一つで、指定した数値の累乗(べき乗)を計算します。具体的には、pow(基数, 指数) の形式で使用し、「基数」を「指数」回かけた結果を返します。

pow関数の使い方

pow(2, 3);  // 2の3乗、結果は8
pow(5, 2);  // 5の2乗、結果は25
pow(10, -1);  // 10の-1乗、結果は0.1

pow(10, 2) だと (10^2 = 100) という計算になりますし、pow(10, -1) のように負の指数も扱えるので、これは (10^{-1} = 0.1) となります。

先ほどの桁数を指定する方法で pow(10, $precision) を使用するのは、小数点以下の桁数を動かすためです。例えば、pow(10, 2) で100を掛けてから、ceilfloor を行い、最終的に100で割ることで元の桁に戻すという処理になります。

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

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

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