zoukankan      html  css  js  c++  java
  • 一个补零小函数

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

    为了导出压缩包,我专门在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了,先这样吧,下班了~

  • 相关阅读:
    再起航,我的学习笔记之JavaScript设计模式13(装饰者模式)
    在 ASP.NET Core 中执行租户服务
    再起航,我的学习笔记之JavaScript设计模式12(适配器模式)
    再起航,我的学习笔记之JavaScript设计模式11(外观模式)
    再起航,我的学习笔记之JavaScript设计模式10(单例模式)
    Entity Framework Core 2.0 全局查询过滤器
    再起航,我的学习笔记之JavaScript设计模式09(原型模式)
    APScheduler
    Gvim打造python编辑器,附自己的配置文件
    Python通过logging记录日志并应用coloredlogs在控制台输出有色字体
  • 原文地址:https://www.cnblogs.com/asie-huang/p/5232026.html
Copyright © 2011-2022 走看看