JavaScript 또는 jQuery에서 숫자의 길이를 찾고 있습니까?
나는 value.length
성공하지 않고 시도했지만 이것을 먼저 문자열로 변환해야합니까?
답변
var x = 1234567;
x.toString().length;
이 프로세스는 또한 효과 Float Number
가 Exponential number
있습니다.
답변
좋아, 많은 답변이 있지만 이것은 재미를 위해 또는 수학이 중요하다는 것을 기억하기위한 순수한 수학입니다.
var len = Math.ceil(Math.log(num + 1) / Math.LN10);
이것은 실제로 지수 형식 인 경우에도 숫자의 “길이”를 제공합니다. num
음수가 아닌 경우, 음수가 아닌 경우 절대 값을 취한 후 부호를 조정하십시오.
ES2015 업데이트
이제는 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, Eric W. “Number Length.” MathWorld–Wolfram 웹 리소스에서.
비트 비트 연산이 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);
답변
템플릿 문자열을 사용할 수도 있습니다.
const num = 123456
`${num}`.length // 6
답변
정수를 문자열로 변환하지 않으면 펑키 루프를 만들 수 있습니다.
var number = 20000;
var length = 0;
for(i = number; i > 1; ++i){
++length;
i = Math.floor(i/10);
}
alert(length);
답변
먼저 문자열로 변환하십시오.
var mynumber = 123;
alert((""+mynumber).length);
빈 문자열을 추가하면 암시 적 mynumber
으로 문자열로 바뀝니다.