求大护发粤语版百度云百度云资源

JS实现将数字金额转换为大写人民币汉字的方法
作者:Quber
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了JS实现将数字金额转换为大写人民币汉字的方法,涉及javascript字符串与数组操作的相关技巧,需要的朋友可以参考下
本文实例讲述了JS实现将数字金额转换为大写人民币汉字的方法。分享给大家供大家参考,具体如下:
//代码如下所示:
function convertCurrency(money) {
//汉字的数字
var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
//基本单位
var cnIntRadice = new Array('', '拾', '佰', '仟');
//对应整数部分扩展单位
var cnIntUnits = new Array('', '万', '亿', '兆');
//对应小数部分单位
var cnDecUnits = new Array('角', '分', '毫', '厘');
//整数金额时后面跟的字符
var cnInteger = '整';
//整型完以后的单位
var cnIntLast = '元';
//最大处理的数字
var maxNum = 999.9999;
//金额整数部分
var integerN
//金额小数部分
var decimalN
//输出的中文金额字符串
var chineseStr = '';
//分离金额后用的数组,预定义
if (money == '') { return ''; }
money = parseFloat(money);
if (money &= maxNum) {
//超出最大处理数字
return '';
if (money == 0) {
chineseStr = cnNums[0] + cnIntLast + cnI
return chineseS
//转换为字符串
money = money.toString();
if (money.indexOf('.') == -1) {
integerNum =
decimalNum = '';
parts = money.split('.');
integerNum = parts[0];
decimalNum = parts[1].substr(0, 4);
//获取整型部分转换
if (parseInt(integerNum, 10) & 0) {
var zeroCount = 0;
var IntLen = integerNum.
for (var i = 0; i & IntL i++) {
var n = integerNum.substr(i, 1);
var p = IntLen - i - 1;
var q = p / 4;
var m = p % 4;
if (n == '0') {
zeroCount++;
if (zeroCount & 0) {
chineseStr += cnNums[0];
zeroCount = 0;
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
if (m == 0 && zeroCount & 4) {
chineseStr += cnIntUnits[q];
chineseStr += cnIntL
//小数部分
if (decimalNum != '') {
var decLen = decimalNum.
for (var i = 0; i & decL i++) {
var n = decimalNum.substr(i, 1);
if (n != '0') {
chineseStr += cnNums[Number(n)] + cnDecUnits[i];
if (chineseStr == '') {
chineseStr += cnNums[0] + cnIntLast + cnI
} else if (decimalNum == '') {
chineseStr += cnI
return chineseS
PS:这里再为大家提供一款在线工具供大家参考:
人民币大写在线转换工具:
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具博客访问: 33195
博文数量: 90
注册时间:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*&小写金额转换成大写(人民币元)
入参(P1):dValue&金额数值或数值字符串
&&a,&也支持千分位格式(#,##0.00)输入;
&&b,&支持负数,将前导“-”号转为“负”字,将前导的“+”号忽略或转为“正”字;
&&c1,&值域之整数部分上限(超限则返回错误):
&&&&&&&44位/千正;43位/百正;42位/十正;&&
&&&&&&&41位/【正】即万涧即亿亿亿亿亿(10^40,1正=1万涧=1亿亿亿亿亿=10,000,000,000,000,000,000,000,000,000,000,000,000,000);40位/千涧;39位/百涧;38位/十涧;&&
&&&&&&&37位/【涧】即万涧即万亿亿亿亿(10^36,1涧=1万沟=1万亿亿亿亿=1,000,000,000,000,000,000,000,000,000,000,000,000);36位/千沟;35位/百沟;34位/十沟;
&&&&&&&33位/【沟】即万穰即亿亿亿亿(10^32,1沟=1万杼=1亿亿亿亿=100,000,000,000,000,000,000,000,000,000,000);31位/千穰;30位/百穰;29位/十穰;&&
&&&&&&&29位/【穰】即万杼即万亿亿亿(10^28,1穰=1万杼=1万亿亿亿=10,000,000,000,000,000,000,000,000,000);28位/千杼;27位/百杼;26位/十杼;
&&&&&&&25位/【杼】即万垓即亿亿亿(10^24,1杼=1万垓=1亿亿亿=1,000,000,000,000,000,000,000,000);24位/千垓;23位/百垓;22位/十垓;
&&&&&&&21位/【垓】即万京即万亿亿(10^20,1垓=1万京=1万亿亿=100,000,000,000,000,000,000);20位/千京;19位/百京;18位/十京;
&&&&&&&17位/【京】即万兆即亿亿(10^16,1京=1万兆=1亿亿=10,000,000,000,000,000);16位/千兆;15位/百兆;14位/十兆;
&&&&&&&13位/【兆】即万亿(10^12,1兆=1万亿=1,000,000,000,000);12位/千亿;11位/百亿;10位/十亿;
&&&&&&&9位/【亿】(10^8,1亿=1万万=100,000,000);8位/千万;7位/百万;6位/十万;
&&&&&&&5位/【万】(10^4,1万=10,000);4位/千;3位/百;2位/十;1位/个。
&&c2,&值域之小数部分上限:5位或用户参数指定(角/分/厘/毫/丝,超限则四舍五入)。
入参(P1):maxDec&精确小数位数(值域0~5,不指定则默认为2,超限归为默认)。
用法:AmountInWords(.123456)&&&&AmountInWords(324,567,890,123.45)&&&&AmountInWords(123.00)&&AmountInWords(0.67)
&&&&&&-10,090,008,000,700,060,005,000,400,030,002,000,100,000,000.123456&=&负壹仟零玖正零捌涧零柒沟零陆穰零伍杼零肆垓零叁京零贰兆零壹亿元壹角贰分叁厘肆毫陆丝
&&&&&&12,345,678,901,234,567,890,123,456,789,012,345,678,901,234.123456&&
=&壹仟贰佰叁拾肆正伍仟陆佰柒拾捌涧玖仟零壹拾贰沟叁仟肆佰伍拾陆穰柒仟捌佰玖拾杼零壹仟贰佰叁拾肆垓伍仟陆佰柒拾捌京玖仟零壹拾贰兆叁仟肆佰伍拾陆亿
柒仟捌佰玖拾万零壹仟贰佰叁拾肆元壹角贰分叁厘肆毫陆丝
返回:大写字符串
更新:冉志军&&12:44
更新说明:整数由11位(百亿)扩展至44位/千正/10^43(注:1正=1万涧=1亿亿亿亿亿,10^40);小数由2位(分/10^-2)扩展至5位(丝/10^-5)并可通过参数自定义;支持正负号;出错不再弹出窗口而改为直接返回返回文本。
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&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&数组(整数部分.小数部分),length=1时则仅为整数。
&&&&var&digits,&radices,&bigRadices,&&&//&数组:数字(0~9——零~玖);基(十进制
记数系统中每个数字位的基是10——拾,佰,仟);大基(万,亿,兆,京,垓,杼,穰,沟,涧,正);辅币(元以下,角/分/厘/毫/丝)。
&&&&var&zeroC&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&零计数
&&&&var&i,&p,&d;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&循环因子;前一位数字;当前位数字。
&&&&var&quotient,&&&&&&&&&&&&&&&&&&&&&&&//&整数部分计算用:商数、模数。
&&&&//&金额数值转换为字符,分割整数部分和小数部分:整数、小数分开来搞(小数部分有可能四舍五入后对整数部分有进位)。
&&&&var&NoneDecLen&=&(typeof(maxDec)&==&"undefined"& ¦
¦&maxDec&==&null& ¦ ¦&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.&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&未指定有效小数位参数值
时,自动取实际小数位长但不超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&=&dV&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.&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.&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;
&&&&//&备注:
&&&&/**********************************************************************************
&&&&毫&....&10^-4&......&0.0001
&&&&厘&....&10^-3&......&0.001
&&&&分&....&10^-2&......&0.01
&&&&角&....&10^-1&......&0.1
&&&&-----------------------------
&&&&个位(元)10^0&&&&&&1
&&&&-----------------------------
&&&&拾&....&10^1&......&10
&&&&佰&....&10^2&......&100
&&&&仟&....&10^3&......&1,000
&&&&万&....&10^4&......&10,000
&&&&亿&....&10^8&......&100,000,000
&&&&兆&....&10^12&.....&1,000,000,000,000
&&&&京&....&10^16&.....&10,000,000,000,000,000
&&&&垓&....&10^20&.....&100,000,000,000,000,000,000&&&&&&&&&&&&&gāi
&&&&杼&....&10^24&.....&1,000,000,000,000,000,000,000,000&&&&&&&zhù&
&&&&穰&....&10^28&.....&10,000,000,000,000,000,000,000,000,000&&rǎng&国际制用“艾可萨”,简称“艾”,符号E&
&&&&沟&....&10^32&.....&100,000,000,000,000,000,000,000,000,000,000
&&&&涧&....&10^36&.....&1,000,000,000,000,000,000,000,000,000,000,000,000
&&&&正&....&10^40&.....&10,000,000,000,000,000,000,000,000,000,000,000,000,000
&&&&载&....&10^44
&&&&极&....&10^48
&&&&恒河沙&.....&10^52
&&&&阿僧祇&.....&10^56
&&&&那由他&.....&10^60
&&&&不可思议&...&10^64
&&&&无量&.......&10^68
&&&&大数&.......&10^72
&&&&**********************************************************************************/
阅读(85) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。JS把阿拉伯数字的金额转换成为中文大写的数字金额
function change(str){
var je="零壹贰叁肆伍陆柒捌玖";
cdw = "万仟百拾亿仟百拾万仟百拾元角分";
var newstring = (str*<span STYLE="color:#).toString(),
newstringlog = newstring.length,
newdw = cdw.substr(cdw.length-newstringlog),
num0 = 0,//记录0的个数
wan = 0, //记录万的个数
dxje = ""; //记录大写金额
//console.log("len="+newstringlog,"newdw="+newdw)
for(var m=1;m&&newstringlog&+1;m++){
var xzf = newstring.substr(m-1,1),
dzf = je.substr(xzf,1),
dw = newdw.substr(m-1,1);
if(dzf == "零"){
if(dw == "亿"){
}else if(dw == "万"){
}else if(dw == "元"){
num0=num0+1;
if(num0-wan&0){
if(dw!="角"){
dzf = "零"+dzf;
//console.log("xzf="+xzf,"dzf="+dzf,"dw="+dw);
dxje = dxje + dzf + dw
// console.log("dxje="+dxje)
if(newstring.length!=1){
if(newstring.substr(newstring.length-2)=="00"){
dxje = dxje + "整";
dxje = dxje;
return dxje;
change(<span STYLE="color:#); //传入想转换的金额数,限制两位小数
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3468)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'js实现金额大小写转换',
blogAbstract:'&script&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(\".\")&&',
blogTag:'金额大小写转换,大小写转换,金额',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:9,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}私活儿神器
MASHUPCLOUD 聚云网
最具价值web全栈课程
只做前端开发培训的好学校,专注于多方向全栈工程师培养。前端名师邵山欢亲自授课,课程涵盖HTML5、CSS3、Node.js、Angular、React诸多课程,免费视频广受学生好评。
跟牛人学前端
跟牛人学前端
妙味大前端自学宝典
妙味课堂2016年JavaScript课程大纲震撼升级、全栈来袭!
前端最新干货
前端最新干货
Nodejs在线课程
智能社就是全栈开发培训,国内正规的JavaScript、HTML5、NodeJS培训机构,专注于让学员获得快乐的学习体验并找到高薪工作的培训
学前端,这套就够了!
传智播客博学谷前端与移动开发学院 - WEB前端培训,HTML5培训,移动开发培训
您的位置: &#187; 分类:
&#187; 文章: 用JavaScript将数字转换为大写金额
您可能感兴趣的文章
近期最热文章
- 2,930 - 2,207 - 2,206 - 2,109

我要回帖

更多关于 大护发百度云链接 的文章

 

随机推荐