js数值四舍五入

来源:互联网 发布:世界时钟哪些软件好 编辑:程序博客网 时间:2024/05/29 05:01

将数值四舍五入后格式化,参数:

① num 数值(Number或者String)

② cent 要保留的小数位(Number)

③ isThousand 是否需要千分位 0:不需要,1:需要(数值类型)

return 格式的字符串

commafy(2581.26898345665,6,0)



function commafy(num, cent, isThousand) {
    // 科学记数法的转换
    function convertNUMFromScientific(beforevalue) {
        if (beforevalue.indexOf('E') == -1 && beforevalue.indexOf('e') == -1) {
            return "0";
        }
        // 转换之前的科学计数法表示
        var tempValueStr = new String(beforevalue);
        var regExp = new RegExp('^((\\d+.?\\d+)[Ee]{1}(\\d+))$', 'ig');
        var result = regExp.exec(beforevalue);
        var resultValue = "";
        var power = "";
        if (result != null) {
            resultValue = result[2];
            power = result[3];
            result = regExp.exec(tempValueStr);
        }
        if (resultValue != "") {
            if (power != "") {
                var powVer = Math.pow(10, power);
                resultValue = resultValue * powVer;
            }
        }
        return resultValue;
    }
    // 科学计数法
    if (num.toString().indexOf('E') != -1 || num.toString().indexOf('e') != -1) {
        // 将科学计数法转换成普通数字
        num = convertNUMFromScientific(num);
    }
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))// 检查传入数值为数值类型.
        num = "0";
    if (isNaN(cent))// 确保传入小数位为数值型数值.
        cent = 0;
    cent = parseInt(cent);
    cent = Math.abs(cent);// 求出小数位数,确保为正整数.
    if (isNaN(isThousand))// 确保传入是否需要千分位为数值类型.
        isThousand = 0;
    isThousand = parseInt(isThousand);
    if (isThousand < 0)
        isThousand = 0;
    if (isThousand >= 1) // 确保传入的数值只为0或1
        isThousand = 1;
    sign = (num == (num = Math.abs(num)));// 获取符号(正/负数)
    // Math.floor:返回小于等于其数值参数的最大整数
    num = Math.floor(num * Math.pow(10, cent) + 0.50000000001);// 把指定的小数位先转换成整数.多余的小数位四舍五入.
    cents = num % Math.pow(10, cent); // 求出小数位数值.
    num = Math.floor(num / Math.pow(10, cent)).toString();// 求出整数位数值.
    cents = cents.toString();// 把小数位转换成字符串,以便求小数位长度.
    while (cents.length < cent) {// 补足小数位到指定的位数.
        cents = "0" + cents;
    }
    if (isThousand == 0) // 不需要千分位符.
        return (((sign) ? '' : '-') + num + '.' + cents);
    // 对整数部分进行千分位格式化.
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
    return (((sign) ? '' : '-') + num + '.' + cents);
};

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小狗呕吐不吃东西没精神怎么办 小狗生病了不吃东西怎么办 小兔子腿摔了怎么办 刺猬葡萄我们骄傲我们该怎么办 小狗被邻居家大狗咬死了怎么办 狗狗死胎在腹中怎么办 小狗不吃饭没精神怎么办 虎皮鹦鹉生蛋了怎么办 钢笔替换芯干了怎么办 水芯钢笔不出水怎么办 被红斑蛇咬了怎么办 狗生完小狗不爰吃饭怎么办 比熊见了狗就叫怎么办 小狗到新主人家里吐怎么办 床上有小绿叶蝉怎么办 腰椎间盘轻微突出怎么办 养的小白兔死了怎么办 小鸡嘴边起很大的疙瘩怎么办 兔子下牙齿断了怎么办 刚种的花蔫了怎么办 鲜切花花朵蔫了怎么办 兔子扭伤脚肿了怎么办 兔子的耳朵肿了怎么办 家里养兔子大了怎么办 幼兔不吃兔粮怎么办 大兔子咬小兔子怎么办 买的小兔子拉稀怎么办 半个月的小兔子怎么办 母兔下崽没奶怎么办 母松鼠下崽后没有奶怎么办 母猫下崽后小猫没奶吃怎么办 母兔产后没奶水怎么办 兔子生崽了不管怎么办 兔子下小兔不管小兔怎么办 兔子下小兔示喂奶怎么办 兔子生完小兔不喂奶怎么办 小兔子生宝宝了怎么办 人摸了小兔崽怎么办 狗狗尿道有脓怎么办 笼养母兔下崽了怎么办 小羊羔站不起来怎么办