string upper_number[10]={"壹","贰","叁","肆","伍","陆","柒","捌","玖","拾"}
string number_dw[13]={"圆","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万"}
string operate,upper_str
int i,j,point_pos,int_len
je = round(je,2)
if je=0 OR je=0.00 then
return "零圆整"
end if
upper_str=""
operate=string(round(abs(je),2))
point_pos=pos(operate,".")
if point_pos=0 then
int_len=len(operate)
else
int_len=point_pos - 1
end if
if abs(je)>0 then
for i=1 to int_len
j=int_len - i + 1
if i>1 AND mid(operate,i,1)="0" then
if mid(operate,i - 1,1)<>"0" AND number_dw[j]<>"万" AND number_dw[j]<>"亿" AND number_dw[j]<>"圆" then
upper_str=upper_str+"零"
elseif number_dw[j]="万" OR number_dw[j]="亿" OR number_dw[j]="圆" then
if right(upper_str,2)<>"零" then
if right(upper_str,2)<>"亿" AND right(upper_str,2)<>"万" then
if right(upper_str,2)="拾" AND number_dw[j]<>"圆" then
upper_str=upper_str+number_dw[j]+"零"
else
upper_str=upper_str+number_dw[j]
end if
end if
else
if (mid(upper_str,len(upper_str) - 3,2)<>"亿" AND mid(upper_str,len(upper_str) - 3,2)<>"万") OR number_dw[j]="圆" then
upper_str=left(upper_str,len(upper_str) - 2)+number_dw[j]
if number_dw[j]<>"圆" then
upper_str=upper_str+"零"
end if
end if
end if
end if
elseif i=1 and int_len=1 and mid(operate,i,1)='0' then
upper_str=""
else
upper_str=upper_str+upper_number[integer(mid(operate,i,1))]+number_dw[j]
end if
next
end if
if point_pos>0 then
if mid(operate,point_pos+1,1)<>"0" then
upper_str=upper_str+upper_number[integer(mid(operate,point_pos+1,1))]+"角"
if mid(operate,point_pos+2,1)<>"0" then
upper_str=upper_str+upper_number[integer(mid(operate,point_pos+2,1))]+"分"
end if
else
if mid(operate,point_pos+2,1)<>"0" then
if upper_str="" then
upper_str=upper_number[integer(mid(operate,point_pos+2,1))]+"分"
else
upper_str=upper_str+"零"+upper_number[integer(mid(operate,point_pos+2,1))]+"分"
end if
end if
end if
end if
if Right(Trim(upper_str),2)<>"分" then
upper_str=upper_str+"整"
end if
if je<0 then upper_str="(负)"+upper_str
return upper_str
这个是我现在在用的,绝对可行,你试试
int i,i1
int val_wu
string chinese[9]
string je[10]
//chinese[1]='零'
chinese[1]='壹'
chinese[2]='贰'
chinese[3]='叁'
chinese[4]='肆'
chinese[5]='伍'
chinese[6]='陆'
chinese[7]='柒'
chinese[8]='捌'
chinese[9]='玖'
je[1]='分'
je[2]='角'
je[3]='元'
je[4]='拾'
je[5]='佰'
je[6]='仟'
je[7]='万'
je[8]='拾'
je[9]='佰'
je[10]='仟'
//---------以下由陈重写 97/8/25
int j,footer1,footer2
dec num
string retstr
i=pos(numstr,'.')
num=dec(numstr)
retstr=''
for j=1 to i - 1
footer1=integer(mid(numstr,j,1))
footer2=i - j+2
if footer1<>0 then
retstr+=chinese[footer1] + je[footer2]
else
if footer2=3 or footer2=7 then
retstr+=je[footer2]
//王晓民 1997/09/23
else
footer1=integer(mid(numstr,j+1,1))
if footer1<>0 then
retstr+='零'
end if
end if
//
end if
end for
for j=i+1 to i+2
footer1=integer(mid(numstr,j,1))
footer2= 3 - (j - i)
if footer1<>0 then
retstr+=chinese[footer1] + je[footer2]
end if
end for
retstr+='整'
if numstr='0.00' then retstr='零元整'
return retstr
调用方法如下:
dec ldec_sum=123.99 //待转换的数值,这里举例带二位小数
string ls_sum //转换后返回的结果
ls_sum=EnToCn(ldec_sum)
if ls_sum<>'0' then
Messagebox("提示","转换结果为:"+ls_sum)
else
Messagebox("提示","转换错误,请检查传入的数值是否非法! ")
return
end if
Dec ld_sl
String ls_sl,ls_ydx,ls_ndx,ls_ndx1,ls_ydx1,ls_tdx
long i,j,l,m
ls_ydx="分角元拾佰仟万拾佰仟亿拾佰仟万亿"
ls_ndx="零壹贰叁肆伍陆柒捌玖"
If sl<0 Then
ld_sl=0 - sl
Else
ld_sl=sl
End if
ld_sl=round(ld_sl,2)
ls_sl=string(ld_sl)
//删除小数点
ls_sl=left(ls_sl,len(ls_sl) - 3)+right(ls_sl,2)
m=len(ls_sl)
//溢出处理
If m>16 Then
messagebox("提示信息","数据出错!")
Return '0'
End if
If ld_sl<1 Then
ls_sl=string(round(dec(ls_sl),0))
End if
For i=1 To m
j=long(mid(ls_sl,1,1))
l=len(ls_sl)
ls_sl=right(ls_sl,l - 1)
ls_ndx1=mid(ls_ndx,2*j+1,2)
ls_ydx1=mid(ls_ydx,2*l - 1,2)
If j=0 Then
If right(ls_tdx,2)<>'零' Then
If l=3 Or l=7 Or l=11 Then
ls_tdx=ls_tdx+ls_ydx1
End if
ls_tdx=ls_tdx+ls_ndx1
Else
If l=3 Then
ls_tdx=left(ls_tdx,len(ls_tdx) -2 )+ls_ydx1
End if
If l=7 Then
If mid(right(ls_tdx,4),1,2)<>'亿' Then
ls_tdx=left(ls_tdx,len(ls_tdx) -2 )+ls_ydx1
End If
End If
If l=11 Then
ls_tdx=left(ls_tdx,len(ls_tdx) -2 )+ls_ydx1
End If
End if
Else
ls_tdx=ls_tdx+ls_ndx1+ls_ydx1
End if
Next
If right(ls_tdx,2)='零' Then
ls_tdx=left(ls_tdx,len(ls_tdx) -2 )
End If
ls_tdx=ls_tdx+"整"
If sl<0 Then
ls_tdx=ls_tdx+"(负)"
End If
Return ls_tdx
Dec ld_sl
String ls_sl,ls_ydx,ls_ndx,ls_ndx1,ls_ydx1,ls_tdx
long i,j,l,m
ls_ydx="分角元拾佰仟万拾佰仟亿拾佰仟万亿"
ls_ndx="零壹贰叁肆伍陆柒捌玖"
If sl<0 Then
ld_sl=0 - sl
Else
ld_sl=sl
End if
ld_sl=round(ld_sl,2)
ls_sl=string(ld_sl)
//删除小数点
ls_sl=left(ls_sl,len(ls_sl) - 3)+right(ls_sl,2)
m=len(ls_sl)
//溢出处理
If m>16 Then
messagebox("提示信息","数据出错!")
Return '0'
End if
If ld_sl<1 Then
ls_sl=string(round(dec(ls_sl),0))
End if
For i=1 To m
j=long(mid(ls_sl,1,1))
l=len(ls_sl)
ls_sl=right(ls_sl,l - 1)
ls_ndx1=mid(ls_ndx,2*j+1,2)
ls_ydx1=mid(ls_ydx,2*l - 1,2)
If j=0 Then
If right(ls_tdx,2)<>'零' Then
If l=3 Or l=7 Or l=11 Then
ls_tdx=ls_tdx+ls_ydx1
End if
ls_tdx=ls_tdx+ls_ndx1
Else
If l=3 Then
ls_tdx=left(ls_tdx,len(ls_tdx) -2 )+ls_ydx1
End if
If l=7 Then
If mid(right(ls_tdx,4),1,2)<>'亿' Then
ls_tdx=left(ls_tdx,len(ls_tdx) -2 )+ls_ydx1
End If
End If
If l=11 Then
ls_tdx=left(ls_tdx,len(ls_tdx) -2 )+ls_ydx1
End If
End if
Else
ls_tdx=ls_tdx+ls_ndx1+ls_ydx1
End if
Next
If right(ls_tdx,2)='零' Then
ls_tdx=left(ls_tdx,len(ls_tdx) -2 )
End If
ls_tdx=ls_tdx+"整"
If sl<0 Then
ls_tdx=ls_tdx+"(负)"
End If
Return ls_tdx