首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小于10的数字加0

小于10的数字加0
EN

Stack Overflow用户
提问于 2011-12-15 07:05:45
回答 10查看 174.4K关注 0票数 107

如何修改此代码以在小于10的任何数字前添加0

代码语言:javascript
复制
$('#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“,北纬168°1’23”

西经04°07‘34“,北纬168°01’23”

耽误您时间,实在对不起

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-12-15 07:07:58

你总是可以做到的

代码语言:javascript
复制
('0' + deg).slice(-2)

请参阅slice()

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

因此

代码语言:javascript
复制
('0' + 11).slice(-2) // '11'
('0' + 4).slice(-2)  // '04'

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

代码语言:javascript
复制
Number.prototype.pad = function(n) {
    return new Array(n).join('0').slice((n || 2) * -1) + this;
}

这将允许你写下:

代码语言:javascript
复制
c += deg.pad() + '° '; // "04° "

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

代码语言:javascript
复制
deg.pad(4) // "0045"

注意明显的缺点,n的值不能大于11,因为0的字符串目前只有10个字符。这当然可以是一种技术解决方案,但我不想在这样一个简单的函数中引入复杂性。(如果您选择这样做,请参阅alex's answer以获得更好的解决方案)。

另请注意,您不能编写2.pad()。它只适用于变量。但是,如果它不是一个变量,你就会预先知道这个数字有多少位数。

票数 295
EN

Stack Overflow用户

发布于 2011-12-15 07:09:49

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

代码语言:javascript
复制
function minTwoDigits(n) {
  return (n < 10 ? '0' : '') + n;
}

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

代码语言:javascript
复制
c += minTwoDigits(deg) + "° ";

诸若此类。

票数 55
EN

Stack Overflow用户

发布于 2015-01-14 00:39:46

代码语言:javascript
复制
if(myNumber.toString().length < 2)
   myNumber= "0"+myNumber;

或者:

代码语言:javascript
复制
return (myNumber.toString().length < 2) ? "0"+myNumber : myNumber;
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8513032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档