小于10加0到数字

uri*_*iah 63 javascript math jquery

如何修改此代码以在低于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;
}
Run Code Online (Sandbox Code Playgroud)

因此,输出将改变

4°7'34"W,168°1'23"N

04°07'34"W,168°01'23"N

谢谢你的时间

Dav*_*und 181

你总能这样做

('0' + deg).slice(-2)
Run Code Online (Sandbox Code Playgroud)

slice():

您还可以使用负数从数组末尾进行选择

于是

('0' + 11).slice(-2) // '11'
('0' + 4).slice(-2)  // '04'
Run Code Online (Sandbox Code Playgroud)

为了便于访问,您当然可以将其提取到函数中,甚至可以Number使用它扩展:

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

这将允许你写:

c += deg.pad() + '° '; // "04° "
Run Code Online (Sandbox Code Playgroud)

上面的函数pad接受一个指定所需字符串长度的参数.如果没有使用这样的参数,则默认为2.您可以写:

deg.pad(4) // "0045"
Run Code Online (Sandbox Code Playgroud)

注意明显的缺点是值n不能高于11,因为0的字符串当前只有10个字符长.这当然可以给出技术解决方案,但我不想在这样一个简单的功能中引入复杂性.(你应该选择,看看亚历克斯的答案,以获得一个很好的方法).

另请注意,您将无法编写2.pad().它只适用于变量.但是,如果它不是变量,您将始终事先知道该数字包含多少位数.

  • 你可以写`2..pad()`:) (3认同)
  • 这将切断前导数字。例如:deg.pad(2); 会将 999 变成 99。 (2认同)

Guf*_*ffa 37

创建一个可以重用的函数:

function minTwoDigits(n) {
  return (n < 10 ? '0' : '') + n;
}
Run Code Online (Sandbox Code Playgroud)

然后在坐标的每个部分使用它:

c += minTwoDigits(deg) + "° ";
Run Code Online (Sandbox Code Playgroud)

等等.

  • +1。说真的,如果你只是处理两位数,这就是这样做的方法;简短、简单、有效、易于阅读。如果您需要考虑用零填充更长的数字,请使用其他解决方案之一,但如果您只是在计算两位数,那么这就是您所需要的。 (2认同)

ale*_*lex 11

您可以编写一个通用函数来执行此操作...

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

js小提琴

这样,处理任意宽度就不成问题了。


Gig*_*ili 9

if(myNumber.toString().length < 2)
   myNumber= "0"+myNumber;
Run Code Online (Sandbox Code Playgroud)

或者:

return (myNumber.toString().length < 2) ? "0"+myNumber : myNumber;
Run Code Online (Sandbox Code Playgroud)


Lui*_*tes 7

你总能做到

('0' + deg).slice(-2)
Run Code Online (Sandbox Code Playgroud)

如果经常使用,可以扩展对象Number

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

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

deg.pad(4) // "0045"
Run Code Online (Sandbox Code Playgroud)

您可以在其中设置任何焊盘尺寸或保留默认值 2。