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不是數(shù)字,則將num置0,并返回
if ('' == num || isNaN(num)) {
return '0.00';
}
// num = parseInt(parseFloat(num) * 100) / 100; // 精度丟失悠菜,此方法不能用
// num = num.toFixed(2).toString();
//如果num是負(fù)數(shù)吩翻,則獲取她的符號(hào)
var sign = '';
if (num.indexOf("-") > (-1)) {
sign = '-';
num = num.substr(1);
}
var cents = '';
if (num.indexOf('.') > 0) {
//如果存在小數(shù)點(diǎn)胶哲,則獲取數(shù)字的小數(shù)部分
cents = (num.indexOf(".") > 0 ? num.substr(num.indexOf("."), 3) + '00' : '').substr(0, 3);
cents = cents.length > 1 ? cents : '';//注意:這里如果是使用change方法不斷的調(diào)用症歇,小數(shù)是輸入不了的
//獲取數(shù)字的整數(shù)數(shù)部分
num = num.substring(0, (num.indexOf(".")));
}
//如果沒有小數(shù)點(diǎn)魏铅,整數(shù)部分不能以0開頭
if ('' == cents) {
if (num.length > 1 && '0' == num.substr(0, 1)) {
return 'Not a Number ! ';
}
}
//如果有小數(shù)點(diǎn)淮腾,且整數(shù)的部分的長度大于1糟需,則整數(shù)部分不能以0開頭
else {
if (num.length > 1 && '0' == num.substr(0, 1)) {
return 'Not a Number ! ';
}
}
//針對(duì)整數(shù)部分進(jìn)行格式化處理,這是此方法的核心谷朝,也是稍難理解的一個(gè)地方洲押,逆向的來思考或者采用簡(jiǎn)單的事例來實(shí)現(xiàn)就容易多了
/*
也可以這樣想象,現(xiàn)在有一串?dāng)?shù)字字符串在你面前圆凰,如果讓你給他家千分位的逗號(hào)的話杈帐,你是怎么來思考和操作的?
字符串長度為0/1/2/3時(shí)都不用添加
字符串長度大于3的時(shí)候,從右往左數(shù)专钉,有三位字符就加一個(gè)逗號(hào)挑童,然后繼續(xù)往前數(shù),直到不到往前數(shù)少于三位字符為止
*/
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));
}
//將數(shù)據(jù)(符號(hào)跃须、整數(shù)部分站叼、小數(shù)部分)整體組合返回
return (sign + num + cents);
} else {
return '0.00';
}
}
function number_format(number, decimals, dec_point, thousands_sep) {
/*
* 參數(shù)說明:
* number:要格式化的數(shù)字
* decimals:保留幾位小數(shù)
* dec_point:小數(shù)點(diǎn)符號(hào)
* thousands_sep:千分位符號(hào)
* */
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);
}