| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:求助数字转换
只看楼主 加入收藏
dlpoint
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-6-18
收藏
 问题点数:0 回复次数:6 
求助数字转换
怎么把阿拉伯数字的金额,转换成大写的金额呀:
比如把¥876543.00,转换成捌拾柒万陆仟伍佰肆拾叁元
搜索更多相关主题的帖子: 数字 
2006-07-27 11:20
hangxj
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2045
专家分:0
注 册:2006-4-10
收藏
得分:0 
这个应该只能一个个的比较转换吧?
不知道有没有什么好方法,我也想知道

http://www./
2006-07-27 12:43
huyuntao
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-6-15
收藏
得分:0 
刚写的一个处理函数
<%
Dim DataType,NewType,NewDataType,CenterType,EndType,LingType
DataType=Array("元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟")
LingType=Array("角","分")
Function GetChar(Char)
Dim Str
If Instr(Char,".")<>0 Then
'如果包含零钱
Str=Split(Char,".")
If Len(Str(0))<=12 Then
For I=1 To Len(Str(0))
'根据数字的长度创建单位
If NewType="" Then
NewType=DataType(I-1)
Else
NewType=NewType&","&DataType(I-1)
End If
Next
NewDataType=Split(NewType,",")
For I=Len(Str(0)) To 1 Step -1
If CenterType="" Then
CenterType=NewDataType(I-1)
Else
CenterType=CenterType&","&NewDataType(I-1)
End If
Next
EndType=Split(CenterType,",")
For I=1 To Len(Str(0))
If MID(Str(0),I,1)<>0 Then
Response.Write NumToChar(MID(Str(0),I,1))&EndType(I-1)
End If
Next
If Right(Str(0),1)=0 Then
Response.Write "元"
End If
For I=1 To 2
If MID(Str(1),I,1)<>0 Then
Response.Write NumToChar(MID(Str(1),I,1))&LingType(I-1)
End If
Next
Else
Response.Write"長度超出限制!"
End If
Else
'不包含零钱
If Len(Char)<=12 Then
For I=1 To Len(Char)
'根据数字的长度创建单位
If NewType="" Then
NewType=DataType(I-1)
Else
NewType=NewType&","&DataType(I-1)
End If
Next
NewDataType=Split(NewType,",")
For I=Len(Char) To 1 Step -1
If CenterType="" Then
CenterType=NewDataType(I-1)
Else
CenterType=CenterType&","&NewDataType(I-1)
End If
Next
EndType=Split(CenterType,",")
For I=1 To Len(Char)
If MID(Char,I,1)<>0 Then
Response.Write NumToChar(MID(Char,I,1))&EndType(I-1)
End If
Next
If Right(Char,1)=0 Then
Response.Write "元"
End If
Else
Response.Write"長度超出限制!"
End If
End If
End Function
'转换函数
Function NumToChar(Str)
Select Case Str
Case "0"
NumToChar="零"
Case "1"
NumToChar="壹"
Case "2"
NumToChar="贰"
Case "3"
NumToChar="叁"
Case "4"
NumToChar="肆"
Case "5"
NumToChar="伍"
Case "6"
NumToChar="陆"
Case "7"
NumToChar="柒"
Case "8"
NumToChar="捌"
Case "9"
NumToChar="玖"
End Select
End Function
Call GetChar("4000.95")
%>

[此贴子已经被作者于2006-7-28 9:46:18编辑过]



n6tzoHEK.txt (1.14 KB) 求助数字转换

2006-07-27 18:31
dlpoint
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-6-18
收藏
得分:0 

厉害呀
谢谢
不过能不能完善一下
"950023"转换成了"玖拾伍万贰拾叁元",能不能转换成"玖拾伍万贰拾叁元"

2006-07-28 15:34
huyuntao
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-6-15
收藏
得分:0 
周末再改,改好再帖。
2006-07-28 17:10
hugeannex
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:483
专家分:911
注 册:2005-3-20
收藏
得分:0 

这个问题并不难,只是耗时。


世事如潮我如水,只叹江湖几人回。
2006-07-29 15:55
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

var CUnit = new Array("", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟");
var UNum = new Array("零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖");

function GetCuExpressInt(fNum)
{
var rt = "";
var c, l;
l = fNum.length;
for(var i=0; i<l; i++)
{
c = parseInt(fNum.substr(l-i-1, 1));
tmp = UNum[c] + ((0==c)? "" : CUnit[i % 12]);
if(4==i && 0==c) tmp = tmp + "萬";
if(8==i && 0==c) tmp = tmp + "億";
rt = tmp + rt;
}
rt = rt.replace(/壹拾/g, "拾");
rt = rt.replace(/零零*/g, "零");
rt = rt.replace(/零*($)/i, "");
rt = rt.replace(/零萬/i, "萬");
rt = rt.replace(/億萬/i, "億");
rt = rt.replace(/零億/i, "億");
return rt;
}

/// 只判斷整數的, 小數的部分比較容易, 自己想想~~~


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-07-30 19:38
快速回复:求助数字转换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023939 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved