10 미만은 숫자에 0을 더합니다.
이 질문에 이미 답변이 있습니다.
- 선행 0으로 값을 어떻게 채울 수 있습니까? 69 답변
이 코드를 수정하여 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"
n
0의 문자열은 현재 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
'programing tip' 카테고리의 다른 글
오류 : Objective-C 모듈 'Firebase'를 빌드 할 수 없습니다. (0) | 2020.11.29 |
---|---|
jquery 부드러운 스크롤을 앵커로? (0) | 2020.11.29 |
비트 맵에 대한 Android 공유 의도-공유 전에 저장하지 않을 수 있습니까? (0) | 2020.11.29 |
Flask 및 uWSGI-앱 0을로드 할 수 없음 (mountpoint = '') (호출 가능을 찾을 수 없음 또는 가져 오기 오류) (0) | 2020.11.29 |
DateTime을 TimeSpan으로 변환 (0) | 2020.11.29 |