javascript - 小于 10 数字加 0

标签 javascript jquery math

<分区>

如何修改此代码以在任何小于 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″,北纬 168° 1′ 23″

西经 04° 07′ 34″,北纬 168° 01′ 23″

谢谢你的时间

最佳答案

你总是可以做

('0' + deg).slice(-2)

参见 slice() :

You can also use negative numbers to select from the end of an array

因此

('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 的值不能大于 11,因为 0 的字符串目前只有 10 个字符长。这当然可以给出技术解决方案,但我不想在这么简单的功能中引入复杂性。 (如果您选择这样做,请参阅 alex's answer 以获得出色的方法)。

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

关于javascript - 小于 10 数字加 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513032/

相关文章:

jquery - 如何验证 Twitter Bootstrap 表单向导

php - Jquery Tagit - 如何将键入的标签传递回 PHP

javascript - 基于内容高度的 iFrame PDF 滚动

javascript - Mongoose 如何发送交易多个集合

javascript - 从node.js中的回调函数获取result.insertId

javascript - 开放层 3 : stylefunction is not called for unselected features after zoom/pan

c# - 在 C# 中编写泛型算术

algorithm - 缩短 14 位以上的大数字

c++ - 为什么这个简单的 C++ 不起作用?

javascript - 根据表单选择下拉选项重定向到 URL