小于 10 将 0 添加到数字

2022-08-30 04:42:13

如何修改此代码以在任何低于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

感谢您抽出宝贵时间接受采访


答案 1

你总是可以做的

('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° "

上述函数接受指定所需字符串长度的参数。如果未使用此类参数,则默认为 2。你可以写:pad

deg.pad(4) // "0045"

请注意一个明显的缺点,即 的值不能大于 11,因为 0 的字符串当前只有 10 个字符长。这当然可以给出一个技术解决方案,但我不想在这样一个简单的函数中引入复杂性。(如果你选择这样做,请参阅亚历克斯的答案,以获得一个很好的方法)。n

另请注意,您将无法编写 。它仅适用于变量。但是,如果它不是一个变量,你总是会事先知道这个数字由多少位数字组成。2.pad()


答案 2

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

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

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

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

等等。