`
喧嚣求静
  • 浏览: 580198 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

js 金额格式化

 
阅读更多
/*数字千分符*/
function rendererZhMoney(v) {
	if(isNaN(v)){
		return v;
	}
	v = (Math.round((v - 0) * 100)) / 100;
	v = (v == Math.floor(v)) ? v + ".00" : ((v * 10 == Math.floor(v * 10)) ? v
			+ "0" : v);
	v = String(v);
	var ps = v.split('.');
	var whole = ps[0];
	var sub = ps[1] ? '.' + ps[1] : '.00';
	var r = /(\d+)(\d{3})/;
	while (r.test(whole)) {
		whole = whole.replace(r, '$1' + ',' + '$2');
	}
	v = whole + sub;
	
	return v;
}

/*转为以万为单位*/
function rendererZhMoneyWan(v) {
	if(isNaN(v)){
		return v;
	}
	v = v*0.0001;//10000;
	v = formatFloat(v,0);//parseInt(v);
	rendererZhMoney(v);
	return v;
}

/*转换为中文大写金额*/
function toBigMoney(value){
	var intFen,i;
	var strArr,strCheck,strFen,strDW,strNum,strBig,strNow;
	var isFu =  false; //是否为负数

	if(value.trim==""){
		return "零";
	}
	strCheck = value+".";
	strArr = strCheck.split(".");
	strCheck = strArr[0];
	var len = strCheck.length ;
	var valueFunc = value+""; //
	if(len > 12){
		Ext.MessageBox.alert("提示","数据"+value+"过大,无法处理!");
		return "";
	}
	try{
		i = 0;
		strBig = "";
		if(valueFunc.indexOf("-") != -1){  //如果为负数
			isFu = true;
			valueFunc = valueFunc.substring(1,valueFunc.length);
			value = valueFunc;
		}
		var s00="00";
		var svalue = value+"";
		var ipos = svalue.indexOf(".") ;
		var iiLen = svalue.length;
		if(ipos<0){
			strFen = svalue+"00";
		}else if(ipos==iiLen-2){
			strFen = svalue.substring(0,iiLen-2)+svalue.substring(iiLen-1,iiLen)+"0";
		}else if(ipos==iiLen-3){
			strFen = svalue.substring(0,iiLen-3)+svalue.substring(iiLen-2,iiLen);
		}else{
			strFen = svalue.substring(0,ipos)+svalue.substring(ipos+1,ipos+3);
		}
		intFen = strFen.length;
		strArr = strFen.split("");
		while(intFen!=0){
			i = i+1;
			switch(i){
				case 1:strDW = "分";break;
				case 2:strDW = "角";break;
				case 3:strDW = "元";break;
				case 4:strDW = "拾";break;
				case 5:strDW = "佰";break;
				case 6:strDW = "仟";break;
				case 7:strDW = "万";break;
				case 8:strDW = "拾";break;
				case 9:strDW = "佰";break;
				case 10:strDW = "仟";break;
				case 11:strDW = "亿";break;
				case 12:strDW = "拾";break;
				case 13:strDW = "佰";break;
				case 14:strDW = "仟";break;
			}
			switch (strArr[intFen-1]){
				case "1":strNum = "壹";break;
				case "2":strNum = "贰";break;
				case "3":strNum = "叁";break;
				case "4":strNum = "肆";break;
				case "5":strNum = "伍";break;
				case "6":strNum = "陆";break;
				case "7":strNum = "柒";break;
				case "8":strNum = "捌";break;
				case "9":strNum = "玖";break;
				case "0":strNum = "零";break;
			}

			strNow = strBig.split("");
			if((i==1)&&(strArr[intFen-1]=="0")){
				strBig = strBig+"整" ;
			} else if((i==2)&&(strArr[intFen-1]=="0")){
				if(strBig!="整")
					strBig = "零"+strBig;
			}else if((i==3)&&(strArr[intFen-1]=="0")){
				strBig = "元"+strBig;
			}else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="元")){
				strBig = "零"+strBig;
			}else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")){}
			else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="元")){}
			else if((i==7)&&(strArr[intFen-1]=="0")){
				strBig ="万"+strBig;
			}else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="万")){
				strBig = "零"+strBig;
			}else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="万")){}
			else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")){}
			else if((i<11)&&(i>8)&&(strArr[intFen-1]!="0")&&(strNow[0]=="万")&&(strNow[2]=="仟")){
				strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length);
			}else if(i==11){
				if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]=="仟")){
					strBig ="亿"+"零"+strBig.substring(1,strBig.length);
				}else if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]!="仟")){
					strBig ="亿"+strBig.substring(1,strBig.length);
				}else if((strNow[0]=="万")&&(strNow[2]=="仟")){
					strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length);
				}else if((strNow[0]=="万")&&(strNow[2]!="仟")){
					strBig = strNum+strDW+strBig.substring(1,strBig.length);
				}else {
					strBig = strNum+strDW+strBig;
				}
			}else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="亿")){
				strBig = "零"+strBig;
			}else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="亿")){
			}else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")){
			}else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]!="仟")){
				strBig = strNum+strDW+strBig.substring(1,strBig.length);
			}else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]=="仟")){
				strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length);
			}else{
				strBig = strNum+strDW+strBig;
			}
			strFen = strFen.substring(0,intFen-1);
			intFen = strFen.length;
			strArr = strFen.split("");
		} 
		if(strBig.substring(0,1)=="元")strBig=strBig.substring(1)
		if(strBig.substring(0,1)=="零")strBig=strBig.substring(1) 
		if(strBig=="整") {strBig="零元整";} 
		if(true == isFu){ //如果为负数
			strBig = "负"+strBig;
		}
		return strBig;
	}catch(err){
		alert(err);
		return "";
	}
}
0
2
分享到:
评论

相关推荐

    javascript精确计算日期处理金额格式化

    在JavaScript开发中,日期处理和金额格式化是两个常见的需求,尤其在财务或者数据分析相关的应用中更为重要。JavaScript原生提供了Date对象来处理日期,但其功能相对有限,因此开发者通常会利用各种库来增强其功能,...

    JS中格式化数字的5个方法

    根据提供的文件信息,本文将详细介绍JavaScript中五种常用的数字格式化方法:`CurrencyFormatted`、`format_number`、`CommaFormatted`、`addCommas` 和 `number_format`。这些函数可以帮助开发者更加灵活地处理和...

    基于vueelement的金额格式化组件

    "基于vue-element的金额格式化组件"是针对这一需求而设计的,它将帮助我们在Vue.js应用中方便地展示和输入货币值。 Vue Element是一个结合了Element UI库的Vue.js插件,Element UI提供了一套美观、易用的组件,适用...

    asp.net+js实现金额格式化.docx

    此外,文章还提到了其他相关的JavaScript金额格式化文章,这些文章提供了不同的方法和思路,可以帮助开发者更全面地理解和解决金额格式化的问题。通过学习和实践这些代码,开发者可以更好地应对在开发过程中遇到的...

    finereport格式化金额函数js中进行数字超大金额千位符格式化处理.docx

    "finereport格式化金额函数js中进行数字超大金额千位符格式化处理" 本文主要讲解了finereport格式化金额函数在JS中进行数字超大金额千位符格式化处理的方法。该需求在前端开发中非常普遍,例如音乐app中的歌曲播放...

    js 金额格式化来回转换示例

    在JavaScript中,金额格式化是一种常见的需求,尤其在前端开发中,为了提升用户对金额的可读性,通常会将数字按照千位分隔符进行格式化,并保留一定数量的小数位。而有时又需要将格式化后的金额还原成原始的数字,...

    js金额数字格式化实现代码(加减逗号处理)

    在JavaScript编程中,格式化数字特别是金额数字是一个常见的需求,主要目的是为了提高可读性,使其更符合人类的阅读习惯。本文将详细讲解如何利用JavaScript实现金额数字的格式化,包括加减逗号以及保留小数位数的...

    JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去

    前端开发中经常会碰到用 JavaScript?... * @return 金额格式的字符串,如'1,234,567.45' * @type String */ function formatCurrency(num) { num = num.toString().replace(/\$|\,/g,''); if(isNaN(n

    数字或金额千分位格式化组件

    "数字或金额千分位格式化组件"就是为了解决这个问题而设计的一种工具。这个组件的主要功能是实现数字和金额的自动格式化,将输入的数值转换成带有千分位分隔符的格式,并控制小数点后的位数。这样不仅提升了用户体验...

    wnumb-1.1.0(js数字&金额格式化,千分位)

    wnumb.js是一个前端格式化数字金额的插件,比如常见的数字千分位问题。用法如下: // 定义格式化的规则 var moneyFormat = wNumb({ mark: '.', thousand: ',', prefix: '$ ', suffix: ' p.p.' }); // 格式化一...

    js实现的格式化数字和金额功能简单示例

    ### JavaScript 数字和金额格式化知识点 #### 1. 格式化数字和金额的概念 在Web开发中,常常需要对数字进行格式化处理,以便以更易读的格式展示给用户。格式化数字和金额指的是将原始的数字字符串转换成带有千位...

    js格式化金额可选是否带千分位以及保留精度

    在JavaScript中,对金额...通过上述描述,我们可以看到,一个有效的JavaScript金额格式化函数应该具备高度的灵活性和健壮性,能够处理各种输入,并生成符合预期的格式化字符串。这对提高用户体验和界面友好性至关重要。

    jquery格式化大写金额组件

    **jQuery格式化大写金额组件**是一个用于将数字金额转换为中文大写的JavaScript插件,广泛应用于财务报表、发票和银行系统中。该组件提供了一种标准且方便的方式来处理金融数据的显示,确保了在前端界面中金额的正确...

    asp.net+js实现金额格式化

    综合以上代码,我们可以实现一个功能完备的金额格式化输入框。用户在输入时,输入的金额会实时地按照每三位数字加逗号的规则进行格式化,同时保留两位小数。这个实现不仅提高了用户体验,也保证了数据的正确性,避免...

    js金额数字规范 大写金额 保留2位数字 js货币格式 规范

    在JavaScript(JS)编程中,处理金额数字的规范和格式化是常见的需求,尤其是在金融、电商等业务场景中。本文将深入探讨如何使用JavaScript来...在实际项目中,这些技术可以结合使用,以满足各种复杂的金额格式化需求。

    JS格式化数字金额用逗号隔开保留两位小数

    在JavaScript中,格式化数字金额以用逗号隔开保留两位小数是一个常见需求,尤其是在涉及到财务数据的展示时。这样的格式化不仅可以让金额显示更加清晰,也有助于用户阅读和理解。 首先,要实现数字金额的格式化,...

    [jquery插件]金额及银行卡号格式化

    这个JavaScript文件包含了实现金额和银行卡号格式化的所有逻辑。开发者可以通过阅读这个文件来理解插件的工作原理,以及如何自定义格式化规则。如果需要扩展功能或调整行为,可以直接修改此文件。 总的来说,这个...

    jQuery货币金钱格式化数字插件

    accounting.js是什么,金钱和货币格式一个微小的JavaScript库,使用可选的Excel风格的列渲染(排队符号和小数)。它的重量轻,完全可本地化和具有零依赖性。 演示地址:http://www.jq22.com/jquery-info326

Global site tag (gtag.js) - Google Analytics