length
bir özelliktir, bir yöntem değildir. Onu arayamazsınız, bu nedenle paranteze ihtiyacınız yoktur ()
:
function getlength(number) {
return number.toString().length;
}
GÜNCELLEME: Yorumlarda tartışıldığı gibi, yukarıdaki örnek kayan sayılar için çalışmayacaktır. Biz ya bir süre kurtulabilirsiniz çalışma yapmak için String(number).replace('.', '').length
, ya da düzenli ifade ile haneleri saymak: String(number).match(/\d/g).length
.
Hız açısından, potansiyel olarak verilen sayıdaki basamak sayısını almanın en hızlı yolu, bunu matematiksel olarak yapmaktır. İçin pozitif tamsayılar harika bir algoritma ile vardır log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Tüm tam sayı türleri (negatifler dahil) için, @ Mwr247'den mükemmel bir optimize edilmiş çözüm vardır , ancak Math.log10
birçok eski tarayıcı tarafından desteklenmediği için kullanırken dikkatli olun . Değiştirilmesi Yani Math.log10(x)
ile Math.log(x) * Math.LOG10E
uyumluluk sorunu çözecektir.
Ondalık sayılar için hızlı matematiksel çözümler oluşturmak , kayan noktalı matematiğin iyi bilinen davranışı nedeniyle kolay olmayacaktır , bu nedenle dizgeye atama yaklaşımı daha kolay ve aptalca kanıtlanacaktır. @Streetlogics tarafından belirtildiği gibi hızlı çevrim, basit sayıdan dizgeye birleştirme ile yapılabilir ve değiştirme çözümünün şu şekle dönüştürülmesine yol açar:
var length = (number + '').replace('.', '').length; // for floats