number_format に小数点以下がある値を渡すのは危ない時がある。

 

\ヘビロテな曲紹介コーナー、はじめました。/

最近、今更ながらこの歌にはまってます。
メリールー/SIX LOUNGE
このギター弾きたくて、耳コピしようとしてるけど、全く進まんです。

 

Googleアナリティクスについてではないです、はい。
次に書きますw
今日はPHPの関数number_formatが怖いことに気づいたので書いておきます。

php.netより:number_format

 

「金額表示で千円以上の時、見やすくしてくれるんだー」って、
この関数をね、小数点発生する値でつかってたんですね、第一引数だけで・・・・
こんな感じ(下)

<?php 

$number1 = 1000.499999; 
echo(number_format($number1));   //1,000

echo("\n");

$number2 = 1000.500000;
echo(number_format($number2));   //1,001

 

( ^ω^ )え、小数点第一位で四捨五入しちゃってるやん。

(なんも指定してないのに)そんなこと求めてないよ。

 

ってなりました。

第二引数を指定しないと、デフォルトの0(=小数点以下の桁数が0)とみなされ、

小数点第一位で四捨五入しちゃいます。

 

てことで、第二引数で、小数点以下が何桁か指定すればいいんだ!

って思ったけど、そんなの予想できない時が大半だと思います・・・。

 

だから、小数点以下が発生しうる値にnumber_format使うときは一旦考えましょう。

小数点以下の桁数が、固定のときは第二引数をきちんと指定すれば、想定通りになるかと思います。

 

 

投稿者:

kin29man

農学部卒の7年目エンジニアです👩‍💻 PHPとGASが好きです!

コメントを残す

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