lengthプロパティではなく、メソッドです。あなたはそれを呼び出すことができないので、括弧は必要ありません():
function getlength(number) {
return number.toString().length;
}
更新:コメントで説明したように、上記の例は浮動小数点数では機能しません。これを機能させるには、ピリオドをString(number).replace('.', '').lengthで取り除くか、または正規表現で数字をカウントしますString(number).match(/\d/g).length。
速度の観点から、与えられた数値の桁数を取得するための最も速い方法は、数学的にそれを行うことです。以下のために正の整数と素晴らしいアルゴリズムがありますlog10:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
すべてのタイプの整数(負を含む)に対して、@ Mwr247による見事な最適化ソリューションがありますがMath.log10、多くのレガシーブラウザではサポートされていないため、の使用には注意してください。したがって、Math.log10(x)と置き換えるとMath.log(x) * Math.LOG10E互換性の問題が解決します。
浮動小数点演算のよく知られた動作のため、10進数の高速数学解を作成することは簡単ではないため、文字列へのキャストアプローチの方が簡単で、ばかです。@streetlogicsで述べたように、単純な数値から文字列への連結を使用して高速キャストを実行できるため、置換ソリューションを次のように変換できます。
var length = (number + '').replace('.', '').length; // for floats