一个补零小函数

因为最近开发的是桌面混合应用,在开发项目中一直需要导出压缩包给其他团队协作或者给产品看效果。

为了导出压缩包,我专门在gulpfile里写了导出命令。每个导出包都带了时间后缀以作区分。但是当今天导出包时,发现变成了201631xxxx,不是我理想中的20160301xxxx,于是催生了这个补零函数。今天突然有了兴致,记录一下这个函数的进化过程。

 

第一时间的想法是这样的:

/**
 * @param {Number} num   原始数字
 * @param {Number} digit 显示位数, 默认为2, 即: 8-->08
 */
function addZero(num, digit) {
    var min = Math.pow(10, digit ? (digit - 1) : 1); //满足该位数的最小数,如2位数为10
    if(num < min) { //如果小于最小数,则补零
        return '0' + num;
    }
    return num + '';
}
addZero(12, 3); //012
addZero(12, 4); //012

此时gulp导出一下,结果很满意变为了20160301xxxx。基本思路是细细一想不对,我这边虽然传了个digit进去,但根本没起什么作用,如果满足条件,无论怎样都只会加一个零。于是再进行改进。

 

其实无需与满足位数的最小数进行对比,只需要比位数。

/**
 * @param {Number} num   原始数字
 * @param {Number} length 显示位数, 默认为2, 即: 8-->08
 * @return {String}
 */
function addZero(num, length) {
    var originLength = (num + '').length;
    var relativeLength = (length || 2) - originLength;

    if(relativeLength > 0) {
        var zeros = '';
        for(var i = 0; i < relativeLength; i++) {
            zeros += '0';
        }
        return zeros + num;
    }
    return num + '';
}
addZero(12, 4); //0012

这下运行出来非常的ok! 慢着,你敢打小数点进去吗?

addZero(12.6, 4); //12.6

呃,考虑不周,继续修改:

function addZero(num, length) {
    var originLength = (parseInt(num) + '').length;
    var relativeLength = (length || 2) - originLength;

    if(relativeLength > 0) {
        var zeros = '';
        for(var i = 0; i < relativeLength; i++) {
            zeros += '0';
        }
        return zeros + num;
    }
    return num + '';
}

addZero(12.6, 3); //012.6
addZero(12.6, 4); //0012.6

这下运行出来非常的ok! 可是我当真不喜欢这循环,好吧。继续。。

function addZero(num, length) {
    var originLength = (parseInt(num) + '').length;
    var relativeLength = (length || 2) - originLength;

    if(relativeLength > 0) {
        return (Math.pow(10, relativeLength) + '').substr(1) + num;
    }
    return num + '';
}
addZero(12.6, 3); //012.6

OK了,先这样吧,下班了~

转载于:https://www.cnblogs.com/asie-huang/p/5232026.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值