js金额格式化,不四舍五入保留两位小数

function toFixed(money) {
        if ('' == money || isNaN(money)) {
            return '0.00'; //异常返回0.00
        }
        if(/\./.test(String(money))){
            money = money + '0000';
        }else{
            money = money + '.0000';
        }
        return money.substr(0,money.indexOf('.')+3)
    }
   // 金额添加千分位
    function  formatCurrency(num) {
        if (num) {
            //将num中的$,去掉,将num变成一个纯粹的数据格式字符串
            num = num.toString().replace(/\$|\,/g, '');
            //如果num不是数字,则将num置0,并返回
            if ('' == num || isNaN(num)) {
                return '0.00';
            }
            // num = parseInt(parseFloat(num) * 100) / 100;  // 精度丢失,此方法不能用
            // num = num.toFixed(2).toString();
            //如果num是负数,则获取她的符号
            var sign = '';
            if (num.indexOf("-") > (-1)) {
                sign = '-';
                num = num.substr(1);
            }
            var cents = '';
            if (num.indexOf('.') > 0) {
                //如果存在小数点,则获取数字的小数部分
                cents = (num.indexOf(".") > 0 ? num.substr(num.indexOf("."), 3) + '00' : '').substr(0, 3);
                cents = cents.length > 1 ? cents : '';//注意:这里如果是使用change方法不断的调用,小数是输入不了的
                //获取数字的整数数部分
                num = num.substring(0, (num.indexOf(".")));
            }
            //如果没有小数点,整数部分不能以0开头
            if ('' == cents) {
                if (num.length > 1 && '0' == num.substr(0, 1)) {
                    return 'Not a Number ! ';
                }
            }
            //如果有小数点,且整数的部分的长度大于1,则整数部分不能以0开头
            else {
                if (num.length > 1 && '0' == num.substr(0, 1)) {
                    return 'Not a Number ! ';
                }
            }
            //针对整数部分进行格式化处理,这是此方法的核心,也是稍难理解的一个地方,逆向的来思考或者采用简单的事例来实现就容易多了
            /*
             也可以这样想象,现在有一串数字字符串在你面前,如果让你给他家千分位的逗号的话,你是怎么来思考和操作的?
             字符串长度为0/1/2/3时都不用添加
             字符串长度大于3的时候,从右往左数,有三位字符就加一个逗号,然后继续往前数,直到不到往前数少于三位字符为止
             */
            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);
        } else {
            return '0.00';
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值