格式化数字

1.第一种方案

$("#addItems").on("keyup","[data-numbox=num]",function(){
  this.value=this.value.replace(/[^d.]/g,"");
});
$("#addItems").on("change","[data-numbox=num]",function(){
  var val = this.value,smalls="";
  //为保证value里没有其他符号这里可以再做一次replace
  if(val==""){
  return;
  }else{
    val=parseFloat(val.replace(/[^d.]/g,"")).toFixed(2);
}

var dpos = val.indexOf(".");
  if(dpos>=0){
    smalls = val.substring(dpos+1,val.length);
    var intNum = val.substring(0,dpos);
}

if(smalls){
  val = formatVal(intNum) +"."+ smalls;
}else{
  val = formatVal(val);
}
  this.value=val;
});

//每三个数字加“,”分隔
function formatVal(val){
  var reg=/(d+)(d{3})/;
  while(reg.test(val)){
    val=val.replace(reg,"$1"+","+"$2");
}
  return val;
}

2.第二种方案

// 格式化金额
function outputmoney(number) {

  number = number.replace(/¥|\,/g, "");
  if (isNaN(number) || number == "") {
  return ""
}
;
  number = Math.round(number * 100) / 100;
  if (number < 0) {
  return '¥-' + outputdollars(Math.floor(Math.abs(number) - 0) + '') + outputcents(Math.abs(number) - 0);
} else {
  return '¥' + outputdollars(Math.floor(number - 0) + '') + outputcents(number - 0);
}
}
// 格式金额之输出元
function outputdollars(number) {
if (number.length <= 3) {
return (number == '' ? '0' : number);
} else {
  var mod = number.length % 3;
  var output = (mod == 0 ? '' : (number.substring(0, mod)));
  for (i = 0; i < Math.floor(number.length / 3); i++) {
  if ((mod == 0) && (i == 0)) {
  output += number.substring(mod + 3 * i, mod + 3 * i + 3);
} else {
  output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
}
  return (output);
}
}
// 格式金额之输出角分
function outputcents(amount) {
  amount = Math.round(((amount) - Math.floor(amount)) * 100);
  return (amount < 10 ? '.0' + amount : '.' + amount);
}

原文地址:https://www.cnblogs.com/woodyliang/p/6397361.html