php 四捨五入・切り捨て・切り上げ、小数(round(),floor(),ceil())

それぞれの記述、整数部の処理を行いたいなど・・・まとめてみた。

作成日:2017-11-29, 更新日:2017-11-29

四捨五入:round()

$num = 1234563.14945689;
echo round($num);     // 小数第一位を四捨五入→整数になる
echo round($num,  1); // 小数第二位を四捨五入→小数第一位まで表示
echo round($num,  2); // 小数第三位を四捨五入
echo round($num, -1); //  1の位を四捨五入
echo round($num, -2); // 10の位を四捨五入

切り捨て:floor()

小数を切り捨て整数にする

$num = 1234563.14945689;
echo floor($num); // 小数を切り捨て→整数になる

小数指定

表示したいとこまで整数にしてから切り捨て。その後、小数に戻す

$num = 1234563.14945689;
$n = 3 ; // 表示したい小数第n位
echo floor( $num * pow(10, $n) ) / pow(10, $n);

切り上げ:ceil()

小数を切り上げ整数にする

$num = 1234563.14945689;
echo ceil($num); // 小数を切り上げ→整数になる

小数指定

表示したいとこまで整数にしてから切り上げ。その後、小数に戻す

$num = 1234563.14945689;
$n = 3 ; // 表示したい小数第n位
echo ceil( $num * pow(10, $n) ) / pow(10, $n);

まとめ

端数処理をまとめておきたい。

function procRounding($num, $target=0, $proc='round') {
  $n = pow(10, $target);
  
  switch ( $proc ) {
    case 'round': // 四捨五入
      $fixNum = round($num, $target);
    break;
    
    case 'floor': // 切り捨て
      $fixNum = floor( $num * $n ) / $n;
    break;
    
    case 'ceil': // 切り上げ
      $fixNum = ceil( $num * $n ) / $n;
    break;
    
    default:
      $fixNum = $num;
    break;
  }
  
  return $fixNum;
}

echo procRounding(123456.789, -1, 'ceil');

「$target」の値と結果
・-2:10の位を四捨五入
・-1: 1の位を四捨五入
・ 0:小数第一位を四捨五入→整数になる
・ 1:小数第二位を四捨五入→小数第一位まで表示
・ 2:小数第三位を四捨五入→小数第二位まで表示