现在的位置: 首页 > 综合 > 正文

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

2013年10月07日 ⁄ 综合 ⁄ 共 1036字 ⁄ 字号 评论关闭

做财务的东西总是比较有挑战的,性能,易用性,准确性都有很高要求,包括一些小的细节。
比如金额需要显示的时候转换成有千分位,小数点后保留2位等。去编辑的时候,又要格式化,把逗号都去掉。网上找了段代码,但是再次编辑会有问题,修改了一下,代码如下:

  1. function outputMoney(number) {
  2.  number=number.replace(//,/g,"");
  3.  if (isNaN(number)||number=="") return "";
  4.  number = Math.round(  number*100) /100;
  5. if(number<0)
  6. return '-'+outputDollars(Math.floor(Math.abs(number)-0) + '') + outputCents(Math.abs(number) - 0);
  7. else
  8. return outputDollars(Math.floor(number-0) + '') + outputCents(number - 0);
  9. }
  10. function outputDollars(number)
  11. {
  12.   if (number.length<= 3)
  13.   return (number == '' ? '0' : number);
  14.   else
  15.   {
  16.     var mod = number.length%3;
  17.     var output = (mod == 0 ? '' : (number.substring(0,mod)));
  18.     for (i=0 ; i< Math.floor(number.length/3) ; i++)
  19.     {
  20.       if ((mod ==0) && (i ==0))
  21.       output+= number.substring(mod+3*i,mod+3*i+3);
  22.       else
  23.       output+= ',' + number.substring(mod+3*i,mod+3*i+3);
  24.     }
  25.     return (output);
  26.   }
  27. }
  28. function outputCents(amount)
  29. {
  30.   amount = Math.round( ( (amount) - Math.floor(amount) ) *100);
  31.   return (amount<10 ? '.0' + amount : '.' + amount);
  32. }

用法:

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

抱歉!评论已关闭.