价格处理

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中的|,/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';
}
}

function number_format(number, decimals, dec_point, thousands_sep) {
/*
* 参数说明:
* number:要格式化的数字
* decimals:保留几位小数
* dec_point:小数点符号
* thousands_sep:千分位符号
* */
number = (number + '').replace(/[^0-9+-Ee.]/g, '');
var n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
s = '',
toFixedFix = function (n, prec) {
var k = Math.pow(10, prec);
return '' + Math.round(n * k) / k;
};

    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');  
    var re = /(-?\d+)(\d{3})/;  
    while (re.test(s[0])) {  
        s[0] = s[0].replace(re, "$1" + sep + "$2");  
    }  
   
    if ((s[1] || '').length < prec) {  
        s[1] = s[1] || '';  
        s[1] += new Array(prec - s[1].length + 1).join('0');  
    }  
    return s.join(dec);  
}

你可能感兴趣的:(价格处理)