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)
참조:
음수를 사용하여 배열 끝에서 선택할 수도 있습니다.
이런 이유로
('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보다 클 수 없습니다.물론 이것은 기술적인 해결책이 될 수 있지만, 저는 그렇게 간단한 기능에 복잡성을 도입하고 싶지 않았습니다.(선택할 경우 알렉스의 답변을 참조하여 이에 대한 탁월한 접근 방식을 확인하십시오.)
또한 쓰기가 불가능합니다.2.pad()
변수에서만 작동합니다.그러나 변수가 아닌 경우에는 숫자가 몇 자리로 구성되어 있는지 항상 미리 알 수 있습니다.
재사용할 수 있는 기능을 만듭니다.
function minTwoDigits(n) {
return (n < 10 ? '0' : '') + n;
}
그런 다음 좌표의 각 부분에서 사용합니다.
c += minTwoDigits(deg) + "° ";
등등.
if(myNumber.toString().length < 2)
myNumber= "0"+myNumber;
또는:
return (myNumber.toString().length < 2) ? "0"+myNumber : myNumber;
언제든지 할 수 있습니다.
('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를 유지할 수 있습니다.
일반 함수를 작성하여 이 작업을 수행할 수 있습니다.
var numberFormat = function(number, width) {
return new Array(+width + 1 - (number + '').length).join('0') + number;
}
그래야 임의의 폭을 다루는 것이 문제가 되지 않습니다.
숫자 문자열의 크기를 지정하기 위해 임의의 수의 선행 0을 추가하는 Generic 함수입니다.
function add_zero(your_number, length) {
var num = '' + your_number;
while (num.length < length) {
num = '0' + num;
}
return num;
}
호프, 이 도움말:
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;
}
저는 지루해서 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;
$('#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);
예상 출력을 보여줍니다.
언급URL : https://stackoverflow.com/questions/8513032/less-than-10-add-0-to-number
'source' 카테고리의 다른 글
반환 문자열 유형 열 값을 버퍼 배열(MariaDB)로 후속 처리 (0) | 2023.08.05 |
---|---|
선택기 "my-app"이(가) 어떤 요소와도 일치하지 않습니다. (0) | 2023.07.31 |
MySQL 데이터베이스의 비어 있지 않은 테이블 목록 (0) | 2023.07.31 |
jQuery document.ready vs 자체 호출 익명 함수 (0) | 2023.07.31 |
Oracle에서 퍼지 텍스트 검색 (0) | 2023.07.31 |