`
跳动的心
  • 浏览: 6464 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

js 把小写的金额转换为大写

阅读更多

 

调用.

$("#moneyBig").html(AmountInWords(num,18));

 转换

/**
 *把小写的金额转换为大写
 *
 **/
function AmountInWords(dValue, maxDec) {
	// 验证输入金额数值或数值字符串:
	dValue = dValue.toString().replace(/,/g, "");
	dValue = dValue.replace(/^0+/, ""); // 金额数值转字符、移除逗号、移除前导零
	if (dValue == "") {
		return "零元整";
	} // (错误:金额为空!)
	else if (isNaN(dValue)) {
		return "错误:金额不是合法的数值!";
	}

	var minus = ""; // 负数的符号“-”的大写:“负”字。可自定义字符,如“(负)”。
	var CN_SYMBOL = ""; // 币种名称(如“人民币”,默认空)
	if (dValue.length > 1) {
		if (dValue.indexOf('-') == 0) {
			dValue = dValue.replace("-", "");
			minus = "负";
		} // 处理负数符号“-”
		if (dValue.indexOf('+') == 0) {
			dValue = dValue.replace("+", "");
		} // 处理前导正数符号“+”(无实际意义)
	}

	// 变量定义:
	var vInt = "";
	var vDec = ""; // 字符串:金额的整数部分、小数部分
	var resAIW; // 字符串:要输出的结果
	var parts; // 数组(整数部分.小数部分),length=1时则仅为整数。
	var digits, radices, bigRadices, decimals; // 数组:数字(0~9——零~玖);基(十进制记数系统中每个数字位的基是10——拾,佰,仟);大基(万,亿,兆,京,垓,杼,穰,沟,涧,正);辅币 (元以下,角/分/厘/毫/丝)。
	var zeroCount; // 零计数
	var i, p, d; // 循环因子;前一位数字;当前位数字。
	var quotient, modulus; // 整数部分计算用:商数、模数。
	// 金额数值转换为字符,分割整数部分和小数部分:整数、小数分开来搞(小数部分有可能四舍五入后对整数部分有进位)。
	var NoneDecLen = (typeof (maxDec) == "undefined" || maxDec == null
			|| Number(maxDec) < 0 || Number(maxDec) > 5); // 是否未指定有效小数位(true/false)
	parts = dValue.split('.'); // 数组赋值:(整数部分.小数部分),Array的length=1则仅为整数。
	if (parts.length > 1) {
		vInt = parts[0];
		vDec = parts[1]; // 变量赋值:金额的整数部分、小数部分

		if (NoneDecLen) {
			maxDec = vDec.length > 5 ? 5 : vDec.length;
		} // 未指定有效小数位参数值时,自动取实际小数位长但不超5。
		var rDec = Number("0." + vDec);
		rDec *= Math.pow(10, maxDec);
		rDec = Math.round(Math.abs(rDec));
		rDec /= Math.pow(10, maxDec); // 小数四舍五入
		var aIntDec = rDec.toString().split('.');
		if (Number(aIntDec[0]) == 1) {
			vInt = (Number(vInt) + 1).toString();
		} // 小数部分四舍五入后有可能向整数部分的个位进位(值1)
		if (aIntDec.length > 1) {
			vDec = aIntDec[1];
		} else {
			vDec = "";
		}
	} else {
		vInt = dValue;
		vDec = "";
		if (NoneDecLen) {
			maxDec = 0;
		}
	}
	if (vInt.length > 44) {
		return "错误:金额值太大了!整数位长【" + vInt.length.toString()
				+ "】超过了上限——44位/千正/10^43(注:1正=1万涧=1亿亿亿亿亿,10^40)!";
	}

	// 准备各字符数组 Prepare the characters corresponding to the digits:
	digits = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); // 零~玖
	radices = new Array("", "拾", "佰", "仟"); // 拾,佰,仟
	bigRadices = new Array("", "万", "亿", "兆", "京", "垓", "杼", "穰", "沟", "涧", "正"); // 万,亿,兆,京,垓,杼,穰,沟,涧,正
	decimals = new Array("角", "分", "厘", "毫", "丝"); // 角/分/厘/毫/丝

	resAIW = ""; // 开始处理

	// 处理整数部分(如果有)
	if (Number(vInt) > 0) {
		zeroCount = 0;
		for (i = 0; i < vInt.length; i++) {
			p = vInt.length - i - 1;
			d = vInt.substr(i, 1);
			quotient = p / 4;
			modulus = p % 4;
			if (d == "0") {
				zeroCount++;
			} else {
				if (zeroCount > 0) {
					resAIW += digits[0];
				}
				zeroCount = 0;
				resAIW += digits[Number(d)] + radices[modulus];
			}
			if (modulus == 0 && zeroCount < 4) {
				resAIW += bigRadices[quotient];
			}
		}
		resAIW += "元";
	}

	// 处理小数部分(如果有)
	for (i = 0; i < vDec.length; i++) {
		d = vDec.substr(i, 1);
		if (d != "0") {
			resAIW += digits[Number(d)] + decimals[i];
		}
	}

	// 处理结果
	if (resAIW == "") {
		resAIW = "零" + "元";
	} // 零元
	if (vDec == "") {
		resAIW += "整";
	} // ...元整
	resAIW = CN_SYMBOL + minus + resAIW; // 人民币/负......元角分/整
	return resAIW;
}

 

 

分享到:
评论

相关推荐

    js_小写金额转大写金额,大写转小写.js

    通过js代码将小写金额转换成大写金额,将大写金额转换成数字

    JavaScript无限位小写金额转换中文大写

    《JavaScript无限位小写金额转换大写金额》说明:1.本程序用JavaScript语言编写。转换方法严格遵照中国人民银行规定的银行支票中关于中文大写填写规范的相关规定(见下面附文),两可之处按简便方法处理。2.输入小写...

    js 实现 小写金额转换为大写

    js 实现 小写金额转换为大写! 值得下载看看!资源免费,大家分享!!

    js实现将小写金额转化为大写金额

    在JavaScript编程中,将小写金额转换为大写金额是一个常见的需求,特别是在财务或电子商务相关的应用中。大写金额主要用于正式的财务报表和发票,以提高数据的清晰度和准确性。下面我们将深入探讨如何利用JavaScript...

    JS小写金额变成大写

    ### JS函数实现小写金额转大写 在财务系统、电子商务平台以及其他需要处理金额显示的应用中,经常需要用到将数字金额转换成大写金额的功能。这种转换不仅有助于提高系统的易读性和用户友好性,还能在一定程度上减少...

    javascript 金额转换(小写转化大写)

    本文将深入探讨如何使用JavaScript来实现小写金额转换为大写的转换算法。 JavaScript是一种广泛使用的客户端脚本语言,它允许开发者在网页中动态处理数据和交互。在处理金额转换时,我们可以利用JavaScript的字符串...

    金额小写转大写完整js

    金额小写转大写完整版本js,可直接调用

    js金额小写转大写脚本

    "js金额小写转大写脚本"指的是JavaScript编程语言中用于将小写的货币金额(阿拉伯数字)转换为大写的汉字数字的代码片段。这样的脚本有助于提高财务报表的可读性和规范性,因为在中国,正式的财务文档通常要求金额以...

    javascript 小写金额转化成大写

    在IT行业中,尤其是在财务系统和电子商务领域,将小写金额转换为大写是常见的需求,因为大写金额在正式的财务凭证中使用,可以避免因数字混淆而引起的错误。JavaScript作为一种广泛使用的前端脚本语言,提供了丰富的...

    小写数字转换大写金额

    在IT领域,尤其是在网页开发中,经常需要将用户输入的小写数字转换为大写金额格式,这主要用于财务、发票或银行交易等应用场景。这个过程可以通过JavaScript实现,利用JavaScript的事件处理和字符串操作功能。在本例...

    JS实现人民币小写转大写

    在JavaScript编程中,有时我们需要将人民币的数字金额(小写)转换为中文的大写形式,以便于财务报表或发票的规范书写。这个过程涉及到字符映射、数字处理以及字符串操作等多个知识点。以下是对这个主题的详细说明:...

    js中实现小写金额到大写金额的转换.docx

    js中实现小写金额到大写金额的转换.docx

    js中实现小写金额到大写金额的转换.pdf

    js中实现小写金额到大写金额的转换.pdf

    输入小写金额,对应的出现大写金额

    小写金额转大写金额 小写金额转换为大写金额主要涉及两个步骤:数值转换与单位匹配。 - **数值转换**:主要是将阿拉伯数字转换为对应的汉字,如“1”转换为“壹”,“2”转换为“贰”等。 - **单位匹配**:根据金额...

    js字符串转货币格式及金额小写转大写

    2. **小写金额转大写**: - 大写金额转换在中文环境下尤其重要,因为在中国,财务报表通常使用大写数字以防止篡改。JavaScript 没有内置的方法来完成这个任务,所以我们需要创建一个映射表来对应每个数字字符的大写...

    大小写转换,大写转小写,小写转大写,首字母大写

    在许多编程语言中,有内置的函数或者方法用于实现大写转小写、小写转大写以及首字母大写的转换。下面我们将详细探讨这些知识点。 1. **大小写转换**:这是指将字符串中的所有字符统一转换为大写或小写。在大多数...

    金额小写转大写支持到13位

    javascript金额小写转大写,支持到小数点前13位。

    JS转换金额大小写,适合用于工资系统,JS文件,可以学习一下,个人整合的

    首先,让我们了解问题的核心:在JavaScript中,将数字(通常以小写形式表示)转换为中文大写。在中文会计中,金额通常以大写汉字表示,以防止篡改。例如,1234.56会转换成“壹仟贰佰叁拾肆元伍角陆分”。 要实现这...

    js 把阿拉伯数字转成中文大写

    前台页面,通过js转化成中文大写,阿拉伯数字转成中文大写

    大写小写双向转换工具

    在处理文本数据时,我们经常需要将字符串中的字符转换为大写或小写,这在数据清洗、格式化、文本比较等方面非常常见。"大写小写双向转换工具"就是这样一个实用程序,它能够方便地帮助用户在大写和小写之间快速切换,...

Global site tag (gtag.js) - Google Analytics