小数の桁数を取得する
$num1 = 12.345;
strlen(substr(strrchr($num1, '.'), 1));
解説
- strrchr関数を使用して、ドット[.]の開始位置を取得
- substr関数を使用して、ドット[.]の次の値以降を取得
- strlen関数を使用して、取得文字の長さを取得
参考
小数点以下の数字を指定桁数だけ丸める
- 丸める
- 1.23 という値を小数点第一位で返したい場合、1.2で返す
- 1.28 という値でも同様に小数点第一位で返したい場合は、1.2で返す
- 上記数字を小数点第二位で返したい場合、1.23 は、1.23を返し、1.28 は、1.28を返す
$digit = 3;
$fraction = 1.2345;
round($fraction + 0.5 * pow(0.1, $digit), $digit, PHP_ROUND_HALF_DOWN)
解説
- pow関数を使用して、指数を作る
- 末尾に0.5を足す事で、繰り上げ・下げをせず
元々の値から指定した桁数だけ切り捨てて返すようにするため
- 末尾に0.5を足す事で、繰り上げ・下げをせず
- round関数を使用して、浮動小数点を$precisionの値だけ丸める
- その時、第3引数に PHP_ROUND_HALF_DOWN を指定して、0に近く方向に値を丸める
- 例えば、1.5 → 1 にして、-1.5 → -1 にする
参考
小数の整数部と小数部をそれぞれ取得する
$num1 = 12.345;
$integer = floor($num1);
$fraction = $num1 - $integer;
$digit = strlen($integer);
解説
- floor関数を使用して、整数部分を取得
- 元の値から、整数部分を引いて、少数部分を取得
- strlen関数を使用して、整数部分の桁数を取得