js处理金额

/***********************************************
功能: 将浮点数字转化为大写汉字金额
参数:
num:浮点数、将要转化的原金额数字
 ***********************************************/
function chineseNumber(num)
{
if (isNaN(num) || num > Math.pow(10, 12)) return "";
var cn = "零壹贰叁肆伍陆柒捌玖";
var unit = new Array("拾佰仟", "分角");
var unit1= new Array("万亿", "");
var numArray = num.toString().split(".");
var start = new Array(numArray[0].length-1, 2);


function toChinese(num, index)
{
var num = num.replace(/\d/g, function ($1){
return cn.charAt($1)+unit[index].charAt(start--%4 ? start%4 : -1)
});
return num;
}


for (var i=0; i<numArray.length; i++)
{
var tmp = "";
for (var j=0; j*4<numArray[i].length; j++)
{
var strIndex = numArray[i].length-(j+1)*4;
var str = numArray[i].substring(strIndex, strIndex+4);
var start = i ? 2 : str.length-1;
var tmp1 = toChinese(str, i);
tmp1 = tmp1.replace(/(零.)+/g, "零").replace(/零+$/, "");
tmp1 = tmp1.replace(/^壹拾/, "拾");
tmp = (tmp1+unit1[i].charAt(j-1)) + tmp;
}
numArray[i] = tmp;
}


numArray[1] = numArray[1] ? numArray[1] : "";
numArray[0] = numArray[0] ? numArray[0]+"元" : numArray[0], numArray[1] = numArray[1].replace(/^零+/, "");
numArray[1] = numArray[1].match(/分/) ? numArray[1] : numArray[1]+"整";
return numArray[0]+numArray[1];
}




/***********************************************
功能: 对输入数字的整数部分插入千位分隔符 以及结尾两位小数
 ***********************************************/
function format(formatV){
  var array=new Array();
  array=formatV.split(".");
 
  var re=/(-?\d+)(\d{3})/; 
  var tempSp = ".";
  while(re.test(array[0])){ 
     array[0]=array[0].replace(re,"$1,$2");
  }
  
  var returnV=array[0];
  for(var i=1;i<array.length;i++){
    tempSp += array[i].length == 1 ? array[i] + "0" : array[i] ;
    returnV+= tempSp;
  }
  returnV = (returnV == "NaN" || returnV == "") ? "" : (returnV.indexOf(".") != -1 ? returnV : returnV + ".00");
  return returnV;
}


/***********************************************
功能: 过滤掉数据的千位分隔符
 ***********************************************/
function unformat(v){
  var x = v.split(',');
  var returnV=parseFloat(x.join(""));
  return returnV;
}


/***********************************************
功能: 浮点数求和,解决精度问题
 ***********************************************/
function FloadAdd(num1,num2){
var r1,r2,m;       
try{r1 = num1.toString().split('.')[1].length;}catch(e){r1 = 0;}
        try{r2 = num2.toString().split(".")[1].length;}catch(e){r2 = 0;}
m = Math.pow(10,Math.max(r1,r2));
// return (num1*m+num2*m)/m;       
return Math.round(num1*m+num2*m)/m;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值