javascript把数字格式化转换成货币类型

做财务的东西总是比较有挑战的,性能,易用性,准确性都有很高要求,包括一些小的细节。
比如金额需要显示的时候转换成有千分位,小数点后保留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);
}

用法:

<input name="TRANS_AMOUNT" type="text" id="TRANS_AMOUNT" size="15" onblur="this.value=outputMoney(this.value);" />

2009-04-28 更新

javascript把数字格式化转换成货币类型》有3个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据