在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
在JavaScript中推荐的零填充方法是什么?我想我可以构建一个自定义函数来填充零到类型转换的值,但我想知道是否有更直接的方法来做到这一点?
注意:这里的“zeroffilled”指的是数据库意义上的单词(其中数字5的6位零填充表示形式将是“000005”)。
当前回答
function zeroPad(num,digits){ return ((num/Math.pow(10,digits))+'').slice(2) }
其他回答
要填充数字的末尾,使用num.toFixed
例如:
document.getElementById('el').value = amt.toFixed(2);
这是我找到的最简单的解决办法,而且很有效。
一个简单优雅的解,n是数字,l是长度。
函数nFill (n, l){返回(l > n.toString () . length) ?((数组(l) . join(“0”)+ n) .slice (- l)): n;}
这将保持长度,如果它是超过所需的,而不是改变数字。
N = 500; console.log (nFill (n, 5)); console.log (nFill (n, 2)); 函数nFill (n, l){返回(l > n.toString () . length) ?((数组(l) . join(“0”)+ n) .slice (- l)): n;}
我觉得我的方法有点不同。我需要填充一个数字的原因是在<pre>元素(屏幕日志的一部分)中显示它,所以它最终将是一个字符串。我没有做任何数学运算,而是写了一个简单的函数来覆盖一个掩码字符串上的字符串值:
function overlayr(m, s) {
return m.length > s.length ? m.substr(0, m.length - s.length) + s : s;
}
这样做的好处是,我可以将它用于各种字符串对齐任务。要调用它,只需传入掩码和数字作为字符串:
> overlayr('00000', (5).toString())
< "00005"
作为一个额外的好处,它可以正确地处理溢出:
> overlayr('00000', (555555).toString())
< "555555"
当然它不局限于0填充:
> overlayr('*****', (55).toString())
< "***55"
function numPadding (padding,i) {
return padding.substr(0, padding.length - (Math.floor(i).toString().length)) + Math.floor(i );
}
numPadding("000000000",234); -> "000000234"
or
function numPadding (number, paddingChar,i) {
var padding = new Array(number + 1).join(paddingChar);
return padding.substr(0, padding.length - (Math.floor(i).toString().length)) + Math.floor(i );
}
numPadding(8 ,"0", 234); -> "00000234";
我的解决方案
Number.prototype.PadLeft = function (length, digit) {
var str = '' + this;
while (str.length < length) {
str = (digit || '0') + str;
}
return str;
};
使用
var a = 567.25;
a.PadLeft(10); // 0000567.25
var b = 567.25;
b.PadLeft(20, '2'); // 22222222222222567.25