PHPで小数点以下を2桁とか3桁に切り捨てる2つの方法

PHPで小数点を2桁とか3桁に切り捨てる方法

これには2つの方法があります。

  • number_format 関数で切り捨てる方法
  • 正規表現を使って切り捨てる方法

ここでは この2つの方法で小数点N桁以下に切り捨てる方法 をまとめました。

あとコード例とかも一緒に紹介していきます。

1. number_format 関数を使うやり方

一番簡単なのは number_format 関数を使うこと

これを使えば、小数点3桁とか2桁以下に簡単に切り捨てられます。

次が number_format  関数についての簡単な説明

number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," ) : string

パラメータが 4 つ全て渡された場合、number はドット (".") の代わりに dec_point が decimals 桁の小数の前に、千位毎にカンマ (",") の代わりに thousands_sep が追加されてフォーマットされます。

引用元 : https://www.php.net/manual/ja/function.number-format.php

これだけだと少し分かりにくい感じだけど・・・

引数を4つ渡した場合、小数点あとの桁数を  $decimals  に変えられるってこと です。

 

例えば次、小数点5桁以下を切り捨てるコード例

コメントにも書いたけど、ちゃんと4桁までで表示されてます。

 

もう1つ例を出すなら、次は3桁以降を切り捨ててるコード例

これは 1.41  みたいに2桁で収まってます。

 

とはいえ number_format  自体は小数点を切り捨てること専用の関数じゃありません。

でも確実に小数点n桁以下を切り捨てたいときに便利そうです。

2.正規表現を使ってn桁以下を切り捨てる方法

お次は preg_replace  関数から正規表現を使って切り捨てる方法

ただし、"肯定的後読み" を使うのが大事なポイント

 

"肯定的後読み" とは、直前にある表現がある場合に一致させるパターン です。

▼ 例 : 直前に hoge  がある fuga  に一致するパターン

ただし、 (?<=hoge)  の hoge  自体は含まれません。

なので、小数点以下n桁を切り捨てたいときは、こういうパターンを書きます。

小数点以下nケタを preg_replace  で空文字に置き換えるという感じ

 

例えば次、小数点以下3桁より下を切り捨てるコード例です。

ハイライトした '/(?<=\.\d{3})\d*$/'  がポイント

コメントに書いたように、 3.141  が出力されます。

 

そして次は小数点以下5桁よりアンダーを切り捨てるコード例

ちゃんと 1.41421  と5ケタで表示されました。

 

もっと汎用的にするなら、次のように関数化すると便利かもしれません

▼ この関数の使用コード例

切り捨て対象にn桁を含めるかどうか、そこは個人の好みです。

切り捨てには preg_match 関数も使用できる

今紹介したのは preg_replace 関数を使った切り捨て方

同じことは preg_match 関数を使ってもできます。

 

例えば次のコード、これは小数点4桁以下を切り捨ててるコードです。

ハイライトした '/^\d+\.\d{3}/'  が重要ポイント

もし n 桁以下を切り捨てたいなら {n-1}  を指定すればいいだけです。

 

もし汎用的な関数にするなら、次みたいにするとスマートですね。

▼ この関数の使用コード例

この関数だと $n  桁は切り捨て対象になりません。

ここまでのまとめ

ということで、今紹介した方法まとめ

データの表示したいときとか、小数を扱う時に便利かもしれないです。

以上、PHPで小数を2桁とか3桁に切り捨てる方法でした。ではでは($・・)/~~~

PHP

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください