本投稿では、数値の長さを取得する方法の備忘録となります。今回は2パターンの取得方法をご紹介します。
toString()を使ってlengthで取得する
数値の長さを取得する場合は、一度toString()を利用して文字列に変換し、その文字列のlengthを取得します。
const num1 = 12345;
const num2 = 543;
console.log(num1.toString().length); // 5
console.log(num2.toString().length); // 3
では、Float型の数値(小数点あり)についてはどうすれば良いでしょうか?
同じように出力した場合、ドット(.)も含まれてしまいます。
const num1 = 123.45; // 5 digits
const num2 = 532.2; // 4 digits
console.log(num1.toString().length); // 6
console.log(num2.toString().length); // 5
その場合は、以下のように表現することで、長さを取得することができます。
const num1 = 123.45; // 5 digits
const num2 = 532.2; // 4 digits
console.log(num1.toString().length - 1); // 5
console.log(num2.toString().length - 1); // 4
小数点以下の数値の数を取得したい場合は、ドットで文字列分割してその後ろの値の長さを求めます。
const num1 = 123.45; // 2 digits
const num2 = 532.2; // 1 digits
console.log(num1.toString().split('.')[1].length); // 2
console.log(num2.toString().split('.')[1].length); // 1
Math.ceil()とMath.log10()を組み合わせて使う
Math.log10()関数は、数値の10を底とした対数を返します。
∀x>0,Math.log10(x)=log10(x)=the uniqueysuch that10y=x
この仕組みを利用してMath.ceil関数を利用して最小の整数を取得します。
function getNumberLength(num) {
return Math.ceil(Math.log10(num + 1));
}
const num1 = 12345;
const num2 = 543;
console.log(getNumberLength(num1)); // 5
console.log(getNumberLength(num2)); // 3
上記のgetNumberLength関数にて出力したMath.log10()の結果はそれぞれ「4.091526272631091」と「2.720159303405957」となります。その値に対して、ceil関数を利用して丸め込みます。
Float型では、小数点以下の数値の長さは取得できず、整数値のみとなります。
function getNumberLength(num) {
return Math.ceil(Math.log10(num + 1));
}
const num1 = 123.45;
const num2 = 543.2;
console.log(getNumberLength(num1)); // 3
console.log(getNumberLength(num2)); // 3
\自身のスキルを向上するには技術書で!!/
月額¥980で技術書が読み放題!!
- ビジネススキルとマインド向上したい!!
- 決断や行動を先送りにしてしまう方!!
最後に
今回はjavascriptでの数値の桁数(長さ)を取得する方法をまとめました。lengthを使う方法は良く知られていますが、ちょっと工夫してMath.log10()を利用し他場合でも取得できるので、是非お試しください。