概要
桁数を得る関数の公開・共有
動機
jsにおける数値の桁数取得についてググったが
専用の標準機能はなかったので作成
処理の流れ
入力値は小数値を切り捨てた絶対値に変換して扱う。
変換後の値が0である場合は、
zeroDigitパラメータで指定された引数を返す。
0に対する桁数の解釈は諸説(0,1,-Infinity)ある。
故にTwitter上で行われていたアンケートにおいて、
最多票数を得た1をzeroDigitのデフォルト値とする。
また、変換後の値が0以外である場合は、
⌊log10(n)+1⌋ により桁数判定を行う。
コード
function digit(number, zeroDigit = 1){
const number_ = Math.floor( Math.abs(number) )
const isZero = number_ == 0
const isZeroFunc = () => zeroDigit
const notZeroFunc = () => Math.floor( Math.log10(number_) ) + 1
const currentFunc = isZero ? isZeroFunc : notZeroFunc
const result = currentFunc()
return result
}
実行結果
digit(0) // -> 1
digit(0.01) // -> 1
digit(9) // -> 1
digit(10) // -> 2
digit(-50) // -> 2
digit(0,0) // -> 0