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

ノムラ
書いた人 ノムラ

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

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の使い方を忘れてしまったら、この記事を思い出して下さい!

自分にプログラミングなんて・・・と思っていませんか?

今後10年間で今ある職業の『77%』はなくなると言われています。

人工知能や機械学習を筆頭にVR、AR、ドローンなどの最先端技術の発達はこれからのあなたの働き方に間違いなく影響を与えるでしょう。

将来を見据えてプログラミングができるようになってエンジニアになりたい、自分だけにしかできないクリエイティブな仕事がしたい、、、とお考えの方も少なくないでしょう。

と、同時に「難しそう、、自分にはできないだろう、、、」と諦めている方も多いのではないでしょうか。

弊社マンツーマンレッスンは、お一人お一人に専属のインストラクターがつくので、通常のスクールでは難しい、オリジナルアプリ開発や、フリーランスとしての仕事獲得まで支援しています。

まずは『無料体験レッスン』で弊社コンサルタントと一緒にあなた専用の学習カリキュラムを考えてみてはいかがでしょうか?

詳しくは下の画像をクリックしてください。

cta_mtm2

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

LINEで送る
Pocket

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

最新情報をお届けします

書いた人

ノムラ

ノムラ

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