如何在VFP下将小写金额转换成大写金额
2个回答
展开全部
1,把下面的代码保存进一个prg文件(注意,由于复制进来格式被改了, 你复制后会发现多了好多空行,删除即可):
*--该函数的返回值能够舍去数字之间的零,比较准确,符合会计准则,比较适合打印银行存单等。
PARAMETERS nAmount
LOCAL lliffu
DO CASE
CASE nAmount<0
nAmount=nAmount*-1
lliffu=.t.
CASE nAmount=0
RETURN '零元整'
ENDCASE
PRIVATE ALL LIKE L_*
L_S1= '零壹贰叁肆伍陆柒捌玖'
L_S2= '亿仟佰拾万仟佰拾亿仟佰拾万仟佰拾元角分'
nAmount=LTRIM(STR(nAmount*100,LEN(L_S2)/2))
L_LEN=LEN(nAmount)
L_SS2=RIGH(L_S2,2*L_LEN)
L_DX= ' '
L_0JS=0 &&连续零的个数
L_N=0
DO WHILE L_N <L_LEN
L_N=L_N+1
L_SZ=SUBSTR(nAmount,L_N,1)
L_SZ=SUBSTR(L_S1,2*VAL(L_SZ)+1,2)
L_DW=SUBSTR(L_SS2,2*L_N-1,2)
IF L_SZ= '零 '
L_SZ= ' '
DO CASE
CASE L_DW$ '亿元 '
CASE L_DW= '万 '
IF RIGH(L_DX,2)= '亿 '
L_DW= ' '
ENDIF
OTHERWISE
L_DW= ' '
ENDCASE
L_0JS=L_0JS+1
ELSE
IF L_0JS> 0
L_SZ= '零 '+L_SZ
ENDIF
L_0JS=0
ENDIF
L_DX=L_DX+L_SZ+L_DW
ENDDO
L_DX=L_DX+IIF(RIGH(nAmount,1)= '0 ', '整 ', ' ')
l_dx=chrtran(l_dx,' ','')
RETURN IIF(lliffu,'负','')+L_DX
2, 比如保存文件名称为num2hz.prg, 放在目录d:\abc下, 举例:
set path to d:\abc
?num2hz(123456.12)
这就是把这个prg文件当成函数, 返回值就是文字
*--该函数的返回值能够舍去数字之间的零,比较准确,符合会计准则,比较适合打印银行存单等。
PARAMETERS nAmount
LOCAL lliffu
DO CASE
CASE nAmount<0
nAmount=nAmount*-1
lliffu=.t.
CASE nAmount=0
RETURN '零元整'
ENDCASE
PRIVATE ALL LIKE L_*
L_S1= '零壹贰叁肆伍陆柒捌玖'
L_S2= '亿仟佰拾万仟佰拾亿仟佰拾万仟佰拾元角分'
nAmount=LTRIM(STR(nAmount*100,LEN(L_S2)/2))
L_LEN=LEN(nAmount)
L_SS2=RIGH(L_S2,2*L_LEN)
L_DX= ' '
L_0JS=0 &&连续零的个数
L_N=0
DO WHILE L_N <L_LEN
L_N=L_N+1
L_SZ=SUBSTR(nAmount,L_N,1)
L_SZ=SUBSTR(L_S1,2*VAL(L_SZ)+1,2)
L_DW=SUBSTR(L_SS2,2*L_N-1,2)
IF L_SZ= '零 '
L_SZ= ' '
DO CASE
CASE L_DW$ '亿元 '
CASE L_DW= '万 '
IF RIGH(L_DX,2)= '亿 '
L_DW= ' '
ENDIF
OTHERWISE
L_DW= ' '
ENDCASE
L_0JS=L_0JS+1
ELSE
IF L_0JS> 0
L_SZ= '零 '+L_SZ
ENDIF
L_0JS=0
ENDIF
L_DX=L_DX+L_SZ+L_DW
ENDDO
L_DX=L_DX+IIF(RIGH(nAmount,1)= '0 ', '整 ', ' ')
l_dx=chrtran(l_dx,' ','')
RETURN IIF(lliffu,'负','')+L_DX
2, 比如保存文件名称为num2hz.prg, 放在目录d:\abc下, 举例:
set path to d:\abc
?num2hz(123456.12)
这就是把这个prg文件当成函数, 返回值就是文字
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询