在PB打印中实现人民币大写


---- 函数名:自定义函数:no_to_char_sell()
---- 函数内容:
string hz[15]
string money[2] //hz[16]='零'
if not rmb
then
hz[1]='一'
hz[2]='二'
hz[3]='三'
hz[4]='四'
hz[5]='五'
hz[6]='六'
hz[7]='七'
hz[8]='八'
hz[9]='九'
hz[10]='十'
hz[11]='百'
hz[12]='千'
hz[13]='万'
hz[14]='亿'
hz[15]='点'
else
hz[1]='壹'
hz[2]='贰'
hz[3]='叁'
hz[4]='肆'
hz[5]='伍'
hz[6]='陆'
hz[7]='柒'
hz[8]='捌'
hz[9]='玖'
hz[10]='拾'
hz[11]='佰'
hz[12]='仟'
hz[13]='万'
hz[14]='亿'
hz[15]='元'
money[1]='角'
money[2]='分'
end if
string val, num2
val=num
do while left(val,1) = '0'
val = right(val,len(val)-1)
loop
if pos(val,'.') < > 0
then
num = left(val,pos(val,'.') - 1)
num2 =mid(val, pos(val,'.') + 1)
end if
string str='',str_tmp
int i
for i= 1 to len(num)
str_tmp=mid(num,i,1)
choose case str_tmp
case '1' str=str+hz[1]
case '2' str=str+hz[2]
case '3' str=str+hz[3]
case '4' str=str+hz[4]
case '5' str=str+hz[5]
case '6' str=str+hz[6]
case '7' str=str+hz[7]
case '8' str=str+hz[8]
case '9' str=str+hz[9]
case '0' str=str+''
end choose
if str_tmp='0' then
if right(str,2)='零' or str='' or i=len(num)
then str=str
else str=str+'零'
end if
else
choose case len(num) -i +1
case 1 str=str
case 2,6,10 str=str +hz[10]
case 3,7,11 str=str +hz[11]
case 4,8,12 str=str +hz[12] //千
case 5,13 str=str +hz[13] //'万'
case 9 str=str +'亿'
end choose
end if
if len(num) -i +1 = 9 and mid (num ,len(num) - 8,1) ='0'
then if right(str,2)='零'
then str = left(str,len(str) - 2) str=str +'亿'
end if
if len(num) -i +1 = 5 and mid (num ,len(num) - 4 ,1) ='0'
then
if right(str,2)='零' then str = left(str,len(str) - 2) str=str +'万'
end if
next
if right(str,2)='零' then str = left(str,len(str) - 2)
end if
if left(str,4) ='一十' or left(str,4) ='壹拾' then str = right(str,len(str) - 2)
int lpos
lpos = pos(str,'亿万')
if lpos < > 0 then str =left(str , lpos +1) +mid(str,lpos +4)
end if
if pos(val,'.') =0 then
if rmb then return str+hz[15]
else return str
end if
end if
str = str + hz[15] //点or 元
int il_i
il_i = len(num2)
if rmb and il_I > 2 then il_i = 2
end if
for i= 1 to il_i
str_tmp=mid(num2,i,1)
choose case str_tmp
case '1' str=str+hz[1]
case '2' str=str+hz[2]
case '3' str=str+hz[3]
case '4' str=str+hz[4]
case '5' str=str+hz[5]
case '6' str=str+hz[6]
case '7' str=str+hz[7]
case '8' str=str+hz[8]
case '9' str=str+hz[9]
case '0' str=str+'零'
end choose
if rmb and right(str,2) < > ' 零' then str=str+money[i]
next
do while right(str,2) = '零'
str = left(str,len(str) - 2)
loop
return str
以上程序本人考虑到数字的各种组合,基本可以对任何数据进行转换成人民币大写。
本程序供大家参考,请大家指教。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值