# javascript实现数字转大写金额的函数

```<SCRIPT type="text/javascript" Charset="GB2312">
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_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 zeroCount;
var i, p, d;
var quotient, modulus;

// Validate input string:
currencyDigits = currencyDigits.toString();
if (currencyDigits == "") {
return "";
}
if (currencyDigits.match(/[^,.\d]/) != null) {
return "";
}
if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))\$/) == null) {
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) {
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;
}
if (modulus == 0 && zeroCount < 4) {
}
}
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;
}
</SCRIPT>
<INPUT id=Digits name=Digits size="15" value="1000001" > <INPUT id=Convert onclick="Result.value = convertCurrency(Digits.value);" type=button value=Convert name=Convert height="185659256"> <INPUT id=Result size=30 name=Result > ```

0 条评论

• ### javascript:算法笔记

入门级算法-线性查找-时间复杂度O(n)--相当于算法界中的HelloWorld //线性搜索(入门HelloWorld) //A为数组，x为要...

• ### Javascript版的Repeater控件实现

其实有点标题党了，呵呵，主要是项目的特殊性，出于性能考虑项目经理规定不能用任何服务端控件(包括Repeater控件)，同时尽量减少服务端处理，并尽可能压缩最终生...

• ### flash开发中如何实现界面代码分离

“flash开发”发展到今天，大体上已经细分为二个分支：Flash 设计师 和 Flash程序员，然而设计师不懂代码，程序员不懂设计，如何把这二种角色有机结合起...

• ### 剑指offer-JavaScript版（12-22题）

12.给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

• ### Docker 入门（二）：从实例来看 Dockerfile 和 Compose

上一文中提到，每次对容器做了改动，如果不把它 commit 成新的镜像，在删除容器后，数据也会丢失，有没有什么更好的办法来保存数据呢？使用数据卷就可以解决这个问...

• ### 现代C++之如何返回一个对象?

一个用来返回的对象，通常应当是可移动构造 / 赋值的，一般也同时是可拷贝构造 / 赋值的。如果这样一个对象同时又可以默认构造，我们就称其为一个半正则（semir...

• ### MRO领域正在探索无人机检修服务

当前，各行业的企业都正转向无人机服务，希望借无人机取得战略优势，维修业也不例外，而且正在将无人机、机器人、数据等结合在一起，增强无人机的“行为能力”。 目前，一...

• ### 更新自己，不要影响其他人

最近围绕着c++和C#的讨论越来越激烈，firelong努力着证明自己的观点，园子里一些大大们也在激烈的辩证着，作为小鸟的我，旁观，看看一笑而过吧。 其实无论哪...

• ### 机器学习实战 -- 机器学习解决问题的通用流程

通用流程主要分为四部分：问题建模、特征工程、模型选择、模型融合。​​​​​​​​​​​​​​

• ### SAP最佳业务实践:ETO–报价处理(232)-13项目重新计划

image.png CJ20N项目重新计划 要确定新成本，项目需要重新计划。 角色项目经理 后勤®项目系统®项目®项目构造器 1. 从工作清单中选择相关项目 (...