//参数检查明显有问题
if(/\./g.test(this.toString()) || Math.abs(this).toString().length >16 )
if(/\./g.test(this.toString()) || Math.abs(this).toString().length >16 )
解决方案 »
- jquery点击输入框让默认文字消失
- 正则表达式替换2 139,30 € 到760€62
- 高手进
- 用Js如何实实HTML中frame的效果?
- 如何终止一个正在运行的倒计时??????
- 奇怪的form.submit()的问题,急,谢谢!
- 各位大虾,怎么实现图片切换?加链接,动态增加图片
- L0ading(L0ading) 和 gaofaq(老高) 你们两们在WEB要出名了!
- 在Javascript中如何设置目标框架,就如超链接中的Target属性?
- 一个关于图片淡隐淡出的问题?请给予指教,谢谢!
- 为何首页放这个JS图片可以滚动,而另一个页面中和图片却不动?(急!)
- document.execCommand如何插入表格
{
if(!/^\d*(\.\d*)?$/.test(num)){alert("Number is wrong!"); return false;} var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var BB = new Array("","拾","佰","仟","萬","億","点","");
var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = ""; for(var i=a[0].length-1; i>=0; i--) //author: meizz
{
switch(k)
{
case 0 : re = BB[7] + re; break;
case 4 : if(!new RegExp("0{4}\\d{"+ (a[0].length-i-1) +"}$").test(a[0]))
re = BB[4] + re; break;
case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
}
if(k%4 == 2 && a[0].charAt(i)=="0" && a[0].charAt(i+2) != "0") re = AA[0] + re;
if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
} if(a.length>1) //加上小数部分(如果有小数部分)
{
re += BB[6];
for(var i=0; i<a[1].length; i++) re += AA[a[1].charAt(i)];
}
return re;
}
{
if(!/^\d*(\.\d*)?$/.test(num)) throw(new Error(-1, "Number is wrong!")); var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var BB = new Array("","拾","佰","仟","萬","億","圆","");
var CC = new Array("角", "分", "厘");
var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = ""; for(var i=a[0].length-1; i>=0; i--) //author: meizz
{
switch(k)
{
case 0 : re = BB[7] + re; break;
case 4 : if(!new RegExp("0{4}\\d{"+ (a[0].length-i-1) +"}$").test(a[0]))
re = BB[4] + re; break;
case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
}
if(k%4 == 2 && a[0].charAt(i)=="0" && a[0].charAt(i+2) != "0") re = AA[0] + re;
if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
} if(a.length>1) //加上小数部分(如果有小数部分)
{
re += BB[6];
for(var i=0; i<a[1].length; i++)
{
re += AA[a[1].charAt(i)] + CC[i];
if(i==2) break;
}
}
return re;
}
document.write(Chinese("1234561324561234562345678.6792"));
壹萬壹拾
壹萬贰拾
壹萬壹佰壹
壹萬壹仟壹佰壹var arr = [ "100000100",
"1000000000000000000000000000000021",
"10010",
"100101"
]
for(var i=0;i<arr.length;i++)
document.write(Chinese(arr[i]) + "<br>");
这个测试就通不过.
收藏…………学习…………
壹拾萬壹佰壹 就是不对的呀,要加零的
<SCRIPT LANGUAGE=vbs>
N=34334100000.0502'假设N不是负数,末尾不带0
Snz=split(cstr(N),".")(0)'整数部分转字串
A=array( "零","壹","贰","叁","肆","伍","陆","柒","捌","玖")
B=array("元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万")
C=array("角","分","厘","毫")
WeiSz=len(cstr(int(Snz)))'整数位数
for i=1 to WeiSz
JieG=JieG & A(cint(mid(Snz,i,1)))
if cint(mid(Snz,i,1))<>0 or _
(WeiSz-i)=0 or (WeiSz-i)=4 or _
(WeiSz-i)=8 or (WeiSz-i)=12 then JieG=JieG & B(WeiSz-i)
JieG=replace(JieG,"零零","")
next
JieG=replace(JieG,"零","")
if N<>int(N) then
JieG=JieG & "零"
Snx=split(cstr(N),".")(1)'小数部分转字串
WeiSx=len(cstr(int(Snx)))'小数位数
for i=1 to WeiSx
if cint(mid(Snx,i,1))=0 then i=i+1
JieG=JieG & A(cint(mid(Snx,i,1))) & C(i-1)
next
end if
msgbox JieG
</SCRIPT><SCRIPT LANGUAGE="JavaScript">
function Chinese(num) //将阿拉伯数字翻译成中文的大写数字
{
if(!num)
{alert("Number is wrong!"); return "Number is wrong!";}
var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var BB = new Array("","拾","佰","仟","萬","億","点","");
var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = "";
for(var i=a[0].length-1; i>=0; i--)
{
switch(k)
{
case 0 : re = BB[7] + re; break;
case 4 : if(!new RegExp("0{4}\{"+ (a[0].length-i-1) +"}$").test(a[0]))
re = BB[4] + re; break;
case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
}
if(k%4 == 2 && a[0].charAt(i+2) != 0 && a[0].charAt(i+1) == 0) re = AA[0] + re;
if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
}
if(a.length>1) //加上小数部分(如果有小数部分)
{
re += BB[6];
for(var i=0; i<a[1].length; i++) re += AA[a[1].charAt(i)];
}
return re;
}
alert(Chinese("34334100000.0502"));
</script>
壹億壹佰 -- 我们写作:壹億零壹佰
就是,当1数到10时,我们用中文,对10都叫“拾”吧。而不是叫“壹拾”。这点,我举一个大点数字,就看得出了:100001这个数,叫“拾万零一”顺些吧但在程序中,叫“一拾万零一”。我就觉得怪怪的。当然,如果是
200001就叫“二拾万零一”了不过,我个人习惯,当100001时,还是直接叫“拾万零一”
要实现你说的并不难不过我是按照MS office 2003来做的,并不是我想当然的,我这么读也不习惯,只是为了适应标准而已.
<SCRIPT LANGUAGE="JavaScript">
function Chinese(numStr) //将阿拉伯数字翻译成中文的大写数字
{
var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var BB = new Array("","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟");
var numStrArry=numStr.split(".");
var tempChineseStr="";
for(var i=numStrArry[0].length-1; i>=0; i--)
{
tempChineseStr=AA[numStrArry[0].charAt(i)]+BB[numStrArry[0].length-1-i]+tempChineseStr;
}
tempChineseStr=tempChineseStr.replace(/(零拾)|(零佰)|(零仟)/ig,"零");
tempChineseStr=tempChineseStr.replace(/零+/ig,"零"); //去连零
tempChineseStr=tempChineseStr.replace(/零([億萬])/ig,"$1");
tempChineseStr=tempChineseStr.replace(/億萬/ig,"億");
tempChineseStr=tempChineseStr.replace(/零$/ig,"");
if(numStrArry.length>1)
{
tempChineseStr+="点";
for(var i=0;i<numStrArry[1].length;i++) tempChineseStr += AA[numStrArry[1].charAt(i)];
}
return tempChineseStr;
}
alert(Chinese("3000011010.05020"));
</script>
以下代码采用万亿的读法。
<SCRIPT LANGUAGE="JavaScript">
function Chinese(numStr) //将阿拉伯数字翻译成中文的大写数字
{
var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var BB = new Array("","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟","萬","拾","佰","仟");
var numStrArry=numStr.split(".");
var tempChineseStr="";
for(var i=numStrArry[0].length-1; i>=0; i--) //得到生硬读法
{
tempChineseStr=AA[numStrArry[0].charAt(i)]+BB[numStrArry[0].length-1-i]+tempChineseStr;
}
tempChineseStr=tempChineseStr.replace(/(零拾)|(零佰)|(零仟)/ig,"零");
tempChineseStr=tempChineseStr.replace(/零+/ig,"零"); //去连零
tempChineseStr=tempChineseStr.replace(/零([億萬])/ig,"$1");
tempChineseStr=tempChineseStr.replace(/億萬/ig,"億");
tempChineseStr=tempChineseStr.replace(/零$/ig,"");
if(numStrArry.length>1)
{
tempChineseStr+="点";
for(var i=0;i<numStrArry[1].length;i++) tempChineseStr += AA[numStrArry[1].charAt(i)];
}
return tempChineseStr;
}
alert(Chinese("30500000000100.05020"));
</script>
这个数字的汉化,应该加给String,而不是加给Number。
javascript的数字是浮点的,浮点数经常会失真,就算是表示整数也会失真。测试一下看看:
var i1=9999999999999981;
var i2=9999999999999982;
var i3=9999999999999983;
var i4=9999999999999984;
var i5=9999999999999985;
var i6=9999999999999986;
var i7=9999999999999987;
document.write( i1.parseCN() + "<br/>");
document.write( i2.parseCN() + "<br/>");
document.write( i3.parseCN() + "<br/>");
document.write( i4.parseCN() + "<br/>");
document.write( i5.parseCN() + "<br/>");
document.write( i6.parseCN() + "<br/>");
document.write( i7.parseCN() + "<br/>");输出的结果是:
玖仟玖佰玖拾玖兆玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰捌拾
玖仟玖佰玖拾玖兆玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰捌拾贰
玖仟玖佰玖拾玖兆玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰捌拾肆
玖仟玖佰玖拾玖兆玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰捌拾肆
玖仟玖佰玖拾玖兆玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰捌拾肆
玖仟玖佰玖拾玖兆玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰捌拾陆
玖仟玖佰玖拾玖兆玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰捌拾捌