一个补零小函数

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

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

时间: 2024-11-07 00:57:35

一个补零小函数的相关文章

Asp.net中固定位数用零补齐的函数(已解决,示例)!

在开发当中,出现编号实现8位数,但需要用0补齐.如:123,表示:0000123. 实例如下: decimal aaa = 123; // 数值型 string bbb = aaa.ToString(); // 转换为字符 bbb = bbb.PadLeft(7, '0'); // 共7位,之前用0补齐 response.write(bbb ); decimal aaa = 123;    // 数值型 string bbb =  aaa.ToString();   // 转换为字符 bbb =

补零与离散傅里叶变换的分辨率

离散傅里叶变换(DFT)的输入是一组离散的值,输出同样是一组离散的值.在输入信号而言,相邻两个采样点的间隔为采样时间Ts.在输出信号而言,相邻两个采样点的间隔为频率分辨率fs/N,其中fs为采样频率,其大小等于1/Ts,N为输入信号的采样点数.这也就是说,DFT的频域分辨率不仅与采样频率有关,也与信号的采样点数有关.那么,如果保持输入信号长度不变,但却对输入信号进行补零,增加DFT的点数,此时的分辨率是变还是不变? 答案是此时分辨率不变.从时域来看,假定要把频率相差很小的两个信号区分开来,直观上

一个奇怪的JS函数

今天在分析一个jQuery插件源码的时候,发现了一个奇怪的函数. // add leading zeros var pad = function(x){return (1e15+""+x).slice(-2)}; 首先1e15是什么意思? 也不是十六进制表示法. 不管三七21,直接F12打开命令窗口,执行下看看,结果是1后面有15个0. 原来1e15是科学计数法,表示1乘以10的15次方. var y=123e5; // 12300000 var z=123e-5; // 0.0012

浅谈Java中的补零扩展和补符号位扩展

今天,魏屌出了一道题,题目如下: 定义一个大头序的byte[]a={-1,-2,-3,-4},转换成short[]b.问b[0]和b[1]分别是多少? 乍一看,这题不难,无非就是移位操作,再进行组合.但是呢?对于用Java的童鞋来说,这里面有一个坑,稍不注意可能就踩进去了.在说之前,我先把代码和答案贴出来吧. 看到这里,可能有的童鞋比较奇怪,为啥要&0xff,这不相当于没变化吗?非也,不信我举个例子. 答案是-127和129.很奇怪不是吗?我想的明明都是-127啊!!! 解答这个问题之前,我们先

javascript实现保留两位小数一位自动补零代码实例

javascript实现保留两位小数一位自动补零代码实例:本章节介绍一下如何实现对数字保留两位小数效果,如果数字的原本小数位数不到两位,那么缺少的就自动补零,这个也是为了统一的效果,先看代码实例: function returnFloat(value){ var value=Math.round(parseFloat(value)*100)/100; var xsd=value.toString().split("."); if(xsd.length==1){ value=value.

SSRS 2012 表达式 -- 空值补零示例

SSRS 2012 表达式 -- 空值补零示例 当我们使用矩阵来设计报表时,常常会发现单元格中出现空值,通常为了报表美观或是方便使用者阅读,会将空值补零,那么零要怎么补呢?在一般的SQL查询语法多半是使用以下方式来补零: SQL Server SELECT ProductName,ISNULL(SalesAmount,0) FROM OrderDetail Oracle SELECT ProductName,DECODE(SalesAmount,null,0) FROM OrderDetail

PHP 字符串两边填充补零

str_pad顾名思义这个函数是针对字符串来说的这个可以对指定的字符串填补任何其它的字符串 例如:str_pad(带填补的字符串,填补后的长度,填补字符串,填补位置) 其中填补后的长度必须是个正整数,填补位置有三个选项,左边:STR_PAD_LEFT,右边:STR_PAD_RIGHT,两端:STR_PAD_BOTH 例如:echo str_pad(1,8,”0″,STR_PAD_LEFT);结果:00000001 echo str_pad(1,8,”0″,STR_PAD_RIGHT);结果:10

PHP实现实现数字补零格式化

在接支付SDK的时候,第三方回调处理时需要IP,并且IP的需求是:去掉点号,补零到每地址段3位, 如:192168000001 先看看我的实现: 1 <?php 2 $IP = explode ( '.', '192.168.1.12' ); 3 $NewIP=""; 4 for($i = 0; $i < count ( $IP ); $i ++) { 5 $NewIP.=str_pad ( $IP [$i], 3, "0", STR_PAD_LEFT

日期相关的小函数汇总

在写日历组件和旅行相关频道开发的过程中,很多需要地方需要和日期对象打交道.拿京东旅游首页来说, 左上角的搜索框就包含了许多日期相关的交互逻辑,它包含了机票,酒店,度假等,这些都含有出发日期,到达日期等. 里面还包含了一个日期组件,在用户选择完出发日期后,会自动把到达日期定位在出发日期的下一天. 又如机票低价日历 还有度假的这种特殊日历 以下是经常需要用到日期相关小函数 一. 判断闰年这个函数在日历组件是必须要的,闰年的2月是29天,非闰年是28天 /* * 判断闰年 * @param {Numb