🌊
数値の桁数を取得する方法【js】
大きな桁の数値の単位変換(millionとか)するときに、数値の桁数を知りたくなる。
数値の桁数を取得する方法をググると、大体が下記のようにstring型へ変更後に長さを取る方法が紹介されている。
const populationJp = 125800000
const digit = String(populationJp).length
console.log(digit) // 9
正数の場合はこれでいいけど、負数だったり小数だったりするとstring型にする前に絶対値を取るなりなんなりの前処理が必要だし、10のべき乗で表したときの指数の方が知りたいのでもやもやしていた。
他にもっといい感じの方法ないか検討したところ、良さそうな方法を見つけたので忘備録としてメモしておく。
NumberオブジェクトのtoExponentialメソッドの活用
詳しい仕様はMDNに任せるとして、10のべき乗で表した際の指数を取るサンプルコードは下記の通り。
const populationJp = 125800000
const [_, digitStr] = populationJp.toExponential().split('e')
console.log(Number(digitStr)) // 8
これなら負数の場合や、
const profit = -1234000
const [_, digitStr] = numObj.toExponential().split('e')
console.log(Number(digitStr)) // 6
少数の場合でも、
const JpyToBtc = 0.00000015
const [_, digitStr] = JpyToBtc.toExponential().split('e')
console.log(Number(digitStr)) // -7
(理系出身の人にとっては)直感的でわかりやすく取り扱いやすい。
桁数が欲しい場合、指数が正の場合は1を足せばよい。
Discussion