215

JavaScript または jQuery で数値の長さを取得しようとしていますか?

最初にこれvalue.lengthを文字列に変換する必要がありますか?

4

15 に答える 15

400
var x = 1234567;

x.toString().length;

このプロセスは、 for Float Numberand for Exponential numberalso にも機能します。

于 2012-06-08T16:26:21.813 に答える
111

わかりました、たくさんの答えがありますが、これは純粋数学の答えです。楽しみのため、または数学が重要であることを思い出すためです。

var len = Math.ceil(Math.log(num + 1) / Math.LN10);

これにより、指数形式であっても、実際には数値の「長さ」がわかります。numここでは非負の整数であると想定されています。負の場合は、その絶対値を取得し、後で符号を調整します。

ES2015のアップデート

今それMath.log10は事です、あなたは簡単に書くことができます

const len = Math.ceil(Math.log10(num + 1));
于 2012-06-08T16:36:20.563 に答える
13

私はnode.jsでこの機能を使用してきましたが、これはこれまでのところ私の最速の実装です。

var nLength = function(n) { 
    return (Math.log(Math.abs(n)+1) * 0.43429448190325176 | 0) + 1; 
}

正と負の整数(指数形式でも)を処理し、整数部分の長さを浮動小数点数で返す必要があります。

次のリファレンスは、メソッドへの洞察を提供するはずです: Weisstein、EricW.「NumberLength」。MathWorldから--WolframWebリソース。

いくつかのビット演算でMath.absを置き換えることができると思いますが、jsperfは、Math.absがほとんどのjsエンジンで問題なく機能することを示しています。

更新:コメントに記載されているように、このソリューションにはいくつかの問題があります:(

Update2(回避策):ある時点で精度の問題が発生し、Math.log(...)*0.434...予期しない動作をするだけだと思います。ただし、Internet Explorerまたはモバイルデバイスがお好みでない場合は、この操作をMath.log10機能に置き換えることができます。Node.jsで、関数を使用して簡単な基本テストを作成しましたが、期待どおりに機能nLength = (n) => 1 + Math.log10(Math.abs(n) + 1) | 0;しましMath.log10た。Math.log10普遍的にサポートされていないことに注意してください。

于 2013-03-13T23:18:34.237 に答える
13

長さを取るには、数字を文字列にする必要があります

var num = 123;

alert((num + "").length);

また

alert(num.toString().length);
于 2012-06-08T16:27:08.617 に答える
6

最初に文字列に変換します。

var mynumber = 123;
alert((""+mynumber).length);

空の文字列を追加すると、暗黙的に文字列になりmynumberます。

于 2012-06-08T16:27:40.923 に答える
5

整数を文字列に変換しなくても、ファンキーなループを作成できます。

var number = 20000;
var length = 0;
for(i = number; i > 1; ++i){
     ++length;
     i = Math.floor(i/10);
}

alert(length);​

デモ: http://jsfiddle.net/maniator/G8tQE/

于 2012-06-08T16:28:49.167 に答える
3

平凡な変換なしの整数または整数部分の長さの方法string

var num = 9999999999; // your number
if (num < 0) num = -num; // this string for negative numbers
var length = 1;
while (num >= 10) {
   num /= 10;
   length++;
}
alert(length);
于 2020-12-10T12:57:10.443 に答える
2

整数にはかなり適した@Nealの回答を修正したいと思いますが、前のケースでは数値1は長さ0を返します。

function Longueur(numberlen)
{
    var length = 0, i; //define `i` with `var` as not to clutter the global scope
    numberlen = parseInt(numberlen);
    for(i = numberlen; i >= 1; i)
    {
        ++length;
        i = Math.floor(i/10);
    }
    return length;
}
于 2012-10-05T19:54:31.797 に答える
0

はい、長さを見つけるために文字列に変換する必要があります。たとえば

var x=100;// type of x is number
var x=100+"";// now the type of x is string
document.write(x.length);//which would output 3.
于 2012-12-27T15:41:19.820 に答える
0

これを試して:

$("#element").text().length;

使用例

于 2012-06-08T16:28:26.230 に答える