数値の桁数を数える2つの方法
次のような時に活用できる方法を2通り紹介します。
- 数値の桁数を取得したい
- 浮動小数点数を含む数値についても桁数を取得したい
1つ目はstrlen関数を使った方法、2つ目はwhile文を使った方法です。
strlen関数で桁数を取得
もし数値が「正」で浮動小数点数が含まれていない場合は、strlen関数で簡単に桁数を取得することができます。
PHP コード例
<?php
$number = 152351;
var_dump( strlen($number)); // int 6
もし浮動小数点数を含む場合は、次のようにうまくカウントされないので注意してください。
PHP コード例
<?php
$number = 152351.19;
var_dump( strlen($number)); // int 9
負の数値の場合も同様に、「-」も1文字としてカウントされてしまい正しく数えることができません。
while文で桁数を取得
もしも数値が「正」の整数ではない可能性がある場合は、次のwhile文を使った方法で正しい桁数を数えることができます。
PHP コード例
<?php
$number = -152351.19;
$abs = abs($number);
$i = 0;
while( 1 <= $abs ) {
$abs /= 10;
$i++;
}
var_dump($i); // int 6
上から順にコードの内容を解説します。
まず、abs関数を使って「絶対数」を取得します。
負の数値についても、絶対数を取得することで「-」を取り除いた数値を取得することができます。
続いて、while文の中で数値が1以下になるまで「÷10」を繰り返し実行し、その回数を$iでカウントします。
以上の処理の結果、while文を抜けると$iから桁数を取得することができるという仕組みです。
もし正確に桁数を取得したい場合は、こちらの方法を試してみてください。