programing tip

10 미만은 숫자에 0을 더합니다.

itbloger 2020. 11. 29. 10:01
반응형

10 미만은 숫자에 0을 더합니다.


이 질문에 이미 답변이 있습니다.

이 코드를 수정하여 10보다 작은 숫자 앞에 0을 추가하려면 어떻게해야합니까?

$('#detect').html( toGeo(apX, screenX)  + latT +', '+ toGeo(apY, screenY) + lonT  );

function toGeo(d, max) {
   var c = '';

   var r = d/max * 180;
   var deg = Math.floor(r);
   c += deg + "° ";

   r = (r - deg) * 60;
   var min = Math.floor(r);
   c += min + "′ ";

   r = (r - min) * 60;
   var sec = Math.floor(r);
   c += sec + "″";

   return c;
}

그래서 아웃 파우 트는

4 ° 7 ′ 34 ″ W, 168 ° 1 ′ 23 ″ N

...에

04 ° 07 ′ 34 ″ W, 168 ° 01 ′ 23 ″ N

시간 내 줘서 고마워


당신은 항상 할 수 있습니다

('0' + deg).slice(-2)

참조 slice():

음수를 사용하여 배열 끝에서 선택할 수도 있습니다.

그 후

('0' + 11).slice(-2) // '11'
('0' + 4).slice(-2)  // '04'

쉽게 액세스 할 수 있도록 함수로 추출하거나 확장 Number할 수도 있습니다.

Number.prototype.pad = function(n) {
    return new Array(n).join('0').slice((n || 2) * -1) + this;
}

다음을 작성할 수 있습니다.

c += deg.pad() + '° '; // "04° "

위의 함수 pad는 원하는 문자열의 길이를 지정하는 인수를받습니다. 그러한 인수가 사용되지 않으면 기본값은 2입니다. 다음과 같이 작성할 수 있습니다.

deg.pad(4) // "0045"

n0의 문자열은 현재 10 자 길이에 불과 하므로의 값 이 11보다 클 수 없다는 명백한 단점에 유의하십시오 . 물론 이것은 기술적 인 해결책이 될 수 있지만, 저는 그러한 단순한 기능에 복잡성을 도입하고 싶지 않았습니다. (당신이 선택한다면, 그것에 대한 훌륭한 접근 방식에 대한 alex의 대답참조하십시오 ).

또한 쓸 수 없습니다 2.pad(). 변수에서만 작동합니다. 그러나 변수가 아니라면 숫자가 몇 자리로 구성되는지 항상 미리 알 수 있습니다.


재사용 할 수있는 함수를 만듭니다.

function minTwoDigits(n) {
  return (n < 10 ? '0' : '') + n;
}

그런 다음 좌표의 각 부분에서 사용하십시오.

c += minTwoDigits(deg) + "° ";

등등.


이를 위해 일반 함수를 작성할 수 있습니다.

var numberFormat = function(number, width) {
    return new Array(+width + 1 - (number + '').length).join('0') + number;
}

jsFiddle .

이렇게하면 임의의 너비를 처리하는 것이 문제가되지 않습니다.


당신은 항상 할 수 있습니다

('0' + deg).slice(-2)

자주 사용하면 개체 번호를 확장 할 수 있습니다.

Number.prototype.pad = function(n) {
    if (n==undefined)
        n = 2;

    return (new Array(n).join('0') + this).slice(-n);
}

deg.pad(4) // "0045"

패드 크기를 설정하거나 기본값 2를 유지할 수 있습니다.


if(myNumber.toString().length < 2)
   myNumber= "0"+myNumber;

또는:

return (myNumber.toString().length < 2) ? "0"+myNumber : myNumber;

나는 지루했고 JSPerf 주위에서 놀면서 무엇을 사용하든 0을 앞에두고 현재 선택된 대답을이기려고 노력했습니다 slice(-2). 현명한 접근 방식이지만 문자열이 길어질수록 성능이 훨씬 나빠집니다.

0에서 10까지의 숫자 (문자열 1 개 및 2 개)의 경우 약 10 %를 이길 수 있었고 charAt, 전체 문자열을 가로 지르지 않아도되도록 긴 문자열을 다룰 때 가장 빠른 방법이 훨씬 더 좋습니다 .

다음은 간단하지 slice(-2)않지만 대부분 3 자리 숫자 (3 개의 문자열)에서 사용할 때 86 % -89 % 더 빠릅니다 .

var prepended = ( 1 === string.length && string.charAt( 0 ) !== "0" ) ? '0' + string : string;

희망,이 도움 :

Number.prototype.zeroFill= function (n) {
    var isNegative = this < 0;
    var number = isNegative ? -1 * this : this;
    for (var i = number.toString().length; i < n; i++) {
        number = '0' + number;
    }
    return (isNegative ? '-' : '') + number;
}

$('#detect').html( toGeo(apX, screenX)  + latT +', '+ toGeo(apY, screenY) + lonT  );

function toGeo(d, max) {
   var c = '';

   var r = d/max * 180;
   var deg = Math.floor(r);
   if(deg < 10) deg = '0' + deg;
   c += deg + "° ";

   r = (r - deg) * 60;
   var min = Math.floor(r);
   if(min < 10) min = '0' + min;
   c += min + "′ ";

   r = (r - min) * 60;
   var sec = Math.floor(r);
   if(sec < 10) sec = '0' + sec;
   c += sec + "″";

   return c;
}

단일 정규식 바꾸기는 다음을 수행해야합니다.

var stringWithSmallIntegers = "4° 7′ 34″W, 168° 1′ 23″N";

var paddedString = stringWithSmallIntegers.replace(
    /\d+/g,
    function pad(digits) {
        return digits.length === 1 ? '0' + digits : digits;
    });

alert(paddedString);

shows the expected output.


Here is Genaric function for add any number of leading zeros for making any size of numeric string.

function add_zero(your_number, length) {
    var num = '' + your_number;
    while (num.length < length) {
        num = '0' + num;
    }
    return num;
}

참고URL : https://stackoverflow.com/questions/8513032/less-than-10-add-0-to-number

반응형