【PHP】floor関数をつかった小数点の切り捨て方法まとめ

ノムラ
書いた人 ノムラ


侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!エンジニアのノムラです。

PHPではfloor関数で端数の切り捨てをすることができます。

この記事では、以下の内容について解説していきたいと思います。

【基礎】floor関数とは
【基礎】小数点以下を切り捨てる
【応用】桁数を指定して切り捨てる
【応用】floor関数の注意点(誤差について)
【応用】その他小数を扱う関数(切り上げ/四捨五入)

floor関数についてだけではなく、その他小数を扱う関数も紹介しているので、これを機にマスターしていきましょう!

floor関数とは

floor関数は、端数の切り捨てをする関数です。

floor関数での端数とは、小数部分です。

引数にfloat型の数値を渡し、小数点以下を切り捨てた整数値をfloat型で返します。

floor関数で小数点以下を切り捨てる

floor関数の使い方を解説していきます。

基本的な使い方

以下にfloor関数を使用したサンプルを示します。

整数部分や小数部分の桁数に関わらず、小数点以下が切り捨てられ整数値が返されています。

引数がプラスの値の場合、floorは整数にキャストした時と同じ値を返します。

「2.9」をfloorで切り捨てると「2」、整数にキャストした時も「2」になります。

マイナスの値を切り捨てる

引数にマイナスの値を指定したサンプルです。

「floor(-2.3)」は「-3」、「floor(-3.45)」は「-4」という値が返されます。

floorは、値が小さくなる方向で小数点を切り捨てます

そのため、小数部分がなくなって「floor(-2.3)」は「-2」、「floor(-3.45)」は「-3」にならないことに注意してください

引数がマイナスの値の場合、整数にキャストした時とは結果が異なります

「-2.9」をfloorで切り捨てると「-3」ですが、整数にキャストすると「-2」になります。

桁数を指定して値を切り捨てる方法

floor関数は小数点以下を切り捨てるので、整数のN桁以下を切り捨てる、小数点第N位以下を切り捨てるというような、桁数を指定しての切り捨てができません

ここでは、桁数を指定して値を切り捨てる方法をご紹介します。

整数のN桁以下を切り捨てる

「15123」の整数の2桁以下を切り捨てる場合のサンプルです。

最初に「15123 / 100」で、切り捨てたい桁以下を小数とする「15.123」という値を作ります。

その値をfloorで切り捨て、最後に100をかけて「15100」にしています。

小数点第N位以下を切り捨てる

「15.123」の小数点第3位以下を切り捨てる場合のサンプルです。

最初に「15.123 * 100」で、切り捨てたい桁以下を小数とする「1512.3」という値を作ります。

その値をfloorで切り捨て、最後に100で割って「15.12」にしています。

floor関数の注意点(誤差について)

ここまで小数点以下を切り捨ててくれる便利な関数としてfloor関数を解説しましたが、気を付けなければいけないこともあります。

まずは、次のサンプルを見てください。

「(0.1 + 0.7) * 10」をfloorで切り捨てるので、実行結果が「8」になると思ってしまいますが、「7」という結果になります

これは丸め誤差によるものです。

コンピュータの内部では、数値をすべて2進数で扱いますが、10進数であれば正確な数で表せる数でも、2進数では正確に表せない数があります

正確に表せない数はある程度の桁数で値を省略することになり、誤差が生じます。これを丸め誤差といいます。

サンプルで使用している「0.1」「0.7」は2進数で正確に表せない数の例であり、丸め誤差により$numの値は「7.999999999999…」となってしまい、予想外の結果になってしまいます。

これを回避するには、floorで切り捨てる前に文字列に変換するという方法があります。

strval関数は、引数の値を文字列として返します。

$numを浮動小数点数ではなく文字列で扱うことで、想定通りの「8」という結果が得られます。

その他小数を扱う関数(切り上げ/四捨五入)

PHPには、floor関数のほかにも小数点以下を切り上げてくれる関数、ceil関数や、四捨五入する関数、round関数などがあります。

これらの関数もあわせて覚えておくと便利です。

以下の記事では、floor関数ceil関数round関数についてまとめられているので、ぜひ参考にしてみてください!

まとめ

今回はfloor関数の使い方について、floor関数の注意点、その他小数を扱う関数について解説してきました。

消費税の計算など、小数を扱う処理はよく使用しますので使い方をしっかり覚えましょう。

floorの使い方を忘れてしまったら、この記事を思い出して下さい!


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

ノムラ

ノムラ

WEBエンジニアをやっています。
プログラミング初心者にもわかりやすく解説ができるよう頑張ります。