function convertCurrency(currencyDigits) {
// Constants:
var MAXIMUM_NUMBER = 99999999999.99;
// Predefine the radix characters and currency symbols for output:
var CN_ZERO = "零";
var CN_ONE = "壹";
var CN_TWO = "贰";
var CN_THREE = "叁";
var CN_FOUR = "肆";
var CN_FIVE = "伍";
var CN_SIX = "陆";
var CN_SEVEN = "柒";
var CN_EIGHT = "捌";
var CN_NINE = "玖";
var CN_TEN = "拾";
var CN_HUNDRED = "佰";
var CN_THOUSAND = "仟";
var CN_TEN_THOUSAND = "万";
var CN_HUNDRED_MILLION = "亿";
var CN_SYMBOL = "";
var CN_DOLLAR = "元";
var CN_TEN_CENT = "角";
var CN_CENT = "分";
var CN_INTEGER = "整";
// Variables:
var integral; // Represent integral part of digit number.
var decimal; // Represent decimal part of digit number.
var outputCharacters; // The output result.
var parts;
var digits, radices, bigRadices, decimals;
var zeroCount;
var i, p, d;
var quotient, modulus;
// Validate input string:
currencyDigits = currencyDigits.toString();
if (currencyDigits == "") {
alert("Empty input!");
return "";
}
if (currencyDigits.match(/[^,.\d]/) != null) {
alert("Invalid characters in the input string!");
return "";
}
if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
alert("Illegal format of digit number!");
return "";
}
// Normalize the format of input digits:
currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters.
currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.
// Assert the number is not greater than the maximum number.
if (Number(currencyDigits) > MAXIMUM_NUMBER) {
alert("Too large a number to convert!");
return "";
}
// Process the coversion from currency digits to characters:
// Separate integral and decimal parts before processing coversion:
parts = currencyDigits.split(".");
if (parts.length > 1) {
integral = parts[0];
decimal = parts[1];
// Cut down redundant decimal digits that are after the second.
decimal = decimal.substr(0, 2);
}
else {
integral = parts[0];
decimal = "";
}
// Prepare the characters corresponding to the digits:
digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
decimals = new Array(CN_TEN_CENT, CN_CENT);
// Start processing:
outputCharacters = "";
// Process integral part if it is larger than 0:
if (Number(integral) > 0) {
zeroCount = 0;
for (i = 0; i < integral.length; i++) {
p = integral.length - i - 1;
d = integral.substr(i, 1);
quotient = p / 4;
modulus = p % 4;
if (d == "0") {
zeroCount++;
}
else {
if (zeroCount > 0)
{
outputCharacters += digits[0];
}
zeroCount = 0;
outputCharacters += digits[Number(d)] + radices[modulus];
}
if (modulus == 0 && zeroCount < 4) {
outputCharacters += bigRadices[quotient];
zeroCount = 0;
}
}
outputCharacters += CN_DOLLAR;
}
// Process decimal part if there is:
if (decimal != "") {
for (i = 0; i < decimal.length; i++) {
d = decimal.substr(i, 1);
if (d != "0") {
outputCharacters += digits[Number(d)] + decimals;
}
}
}
// Confirm and return the final output string:
if (outputCharacters == "") {
outputCharacters = CN_ZERO + CN_DOLLAR;
}
if (decimal == "") {
outputCharacters += CN_INTEGER;
}
outputCharacters = CN_SYMBOL + outputCharacters;
return outputCharacters;
}
分享到:
相关推荐
在JavaScript编程中,有时我们需要将人民币的数字金额(小写)转换为中文的大写形式,以便于财务报表或发票的规范书写。这个过程涉及到字符映射、数字处理以及字符串操作等多个知识点。以下是对这个主题的详细说明:...
这个函数已经足够处理题目中提到的需求,即“JavaScript钱数小写转大写精确到分小数点后两位,最大可以带亿”。当然,实际应用中可能还需要考虑更多细节,比如负数、非数字输入等情况的处理。但以上代码已经给出了...
《JavaScript无限位小写金额转换大写金额》说明:1.本程序用JavaScript语言编写。转换方法严格遵照中国人民银行规定的银行支票中关于中文大写填写规范的相关规定(见下面附文),两可之处按简便方法处理。2.输入小写...
人民币小写转大写的功能,其核心在于将数字字符串(如"123456.78")转换为对应的中文大写金额(如"壹拾贰万叁仟肆佰伍拾陆元柒角捌分")。实现这个功能的关键步骤包括: 1. **金额分割**:将金额分为整数部分和小数...
本文将深入探讨如何使用JavaScript来实现小写金额转换为大写的转换算法。 JavaScript是一种广泛使用的客户端脚本语言,它允许开发者在网页中动态处理数据和交互。在处理金额转换时,我们可以利用JavaScript的字符串...
"js金额小写转大写脚本"指的是JavaScript编程语言中用于将小写的货币金额(阿拉伯数字)转换为大写的汉字数字的代码片段。这样的脚本有助于提高财务报表的可读性和规范性,因为在中国,正式的财务文档通常要求金额以...
javascript金额小写转大写,支持到小数点前13位。
在许多编程语言中,有内置的函数或者方法用于实现大写转小写、小写转大写以及首字母大写的转换。下面我们将详细探讨这些知识点。 1. **大小写转换**:这是指将字符串中的所有字符统一转换为大写或小写。在大多数...
在编程中,将人民币小写转换为大写,一般涉及以下步骤: 1. **整数部分的转换**:将整数部分的每一位数字对应到相应的汉字。例如,0对应零,1对应壹,以此类推至9对应玖。这个过程可以通过创建一个映射表来实现,将...
在IT行业中,尤其是在财务系统和电子商务领域,将小写金额转换为大写是常见的需求,因为大写金额在正式的财务凭证中使用,可以避免因数字混淆而引起的错误。JavaScript作为一种广泛使用的前端脚本语言,提供了丰富的...
### JS函数实现小写金额转大写 在财务系统、电子商务平台以及其他需要处理金额显示的应用中,经常需要用到将数字金额转换成大写金额的功能。这种转换不仅有助于提高系统的易读性和用户友好性,还能在一定程度上减少...
在IT领域,尤其是在网页开发中...总的来说,小写数字到大写金额的转换是JavaScript应用中的常见需求,涉及到字符串操作、事件监听以及对特定领域知识的理解。通过这样的实践,开发者可以进一步提高自己的前端开发技能。
"大写小写双向转换工具"就是这样一个实用程序,它能够方便地帮助用户在大写和小写之间快速切换,提高工作效率。 1. **大小写转换的基本概念**: 在计算机编程中,字符串的大小写转换是通过特定函数实现的。在ASCII...
2. **小写转换**:将文本全部转换为小写字母。这是在不考虑字符的大小写信息时,比如在比较字符串或进行关键词匹配时常用的方法。 3. **首字母大写**:仅将文本的每个单词首字母转换为大写,其余字母转为小写。这种...
在JavaScript编程中,将小写金额转换为大写金额是一个常见的需求,特别是在财务或电子商务相关的应用中。大写金额主要用于正式的财务报表和发票,以提高数据的清晰度和准确性。下面我们将深入探讨如何利用JavaScript...
"人名币大小写转换js代码"这个主题,核心就是利用JavaScript编写函数,将输入的数字(通常是小写)转换为对应的中文大写人民币格式。这涉及到数字的处理、字符串的拼接以及中文字符的使用。 在实现这个功能时,首先...
"金额小写转大写函数"是金融或会计软件中常用的功能,因为在中国,财务报告中的金额通常需要以大写汉字表示,以防止篡改。编写这样的函数通常需要对数字和汉字的对应关系有深入了解,并且考虑到各种特殊情况,比如零...
2. **小写金额转大写**: - 大写金额转换在中文环境下尤其重要,因为在中国,财务报表通常使用大写数字以防止篡改。JavaScript 没有内置的方法来完成这个任务,所以我们需要创建一个映射表来对应每个数字字符的大写...
### JavaScript 实现金额小写转大写的详细解析 在日常的开发工作中,我们经常会遇到一些与数字相关的功能需求,比如将用户输入的小写金额转换为大写形式进行展示或存储。这种需求常见于财务系统、银行应用等场景,...