JavaScript または jQuery で数値の長さを取得しようとしていますか?
最初にこれvalue.length
を文字列に変換する必要がありますか?
JavaScript または jQuery で数値の長さを取得しようとしていますか?
最初にこれvalue.length
を文字列に変換する必要がありますか?
var x = 1234567;
x.toString().length;
このプロセスは、 for Float Number
and for Exponential number
also にも機能します。
わかりました、たくさんの答えがありますが、これは純粋数学の答えです。楽しみのため、または数学が重要であることを思い出すためです。
var len = Math.ceil(Math.log(num + 1) / Math.LN10);
これにより、指数形式であっても、実際には数値の「長さ」がわかります。num
ここでは非負の整数であると想定されています。負の場合は、その絶対値を取得し、後で符号を調整します。
今それMath.log10
は事です、あなたは簡単に書くことができます
const len = Math.ceil(Math.log10(num + 1));
私は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
普遍的にサポートされていないことに注意してください。
長さを取るには、数字を文字列にする必要があります
var num = 123;
alert((num + "").length);
また
alert(num.toString().length);
最初に文字列に変換します。
var mynumber = 123;
alert((""+mynumber).length);
空の文字列を追加すると、暗黙的に文字列になりmynumber
ます。
整数を文字列に変換しなくても、ファンキーなループを作成できます。
var number = 20000;
var length = 0;
for(i = number; i > 1; ++i){
++length;
i = Math.floor(i/10);
}
alert(length);
平凡な変換なしの整数または整数部分の長さの方法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);
整数にはかなり適した@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;
}
はい、長さを見つけるために文字列に変換する必要があります。たとえば
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.