天天看點

程式員筆試題- 将人民币金額轉換成大寫的金額

提供兩種方法:

//////////////////////////////////////////////////////////////////////

//将錢數轉化為大寫

constant string ls_bit = "萬仟佰拾億仟佰拾萬仟佰拾元角分"

constant string ls_num = "壹貳叁肆伍陸柒捌玖"

long lmax = len( ls_bit ) + 1

string ls_je, ls_dw, ls_result = ''''

long ll_len, i, k

ls_je = string( data, "#############.00" )

ll_len = len( ls_je ) - 1

ls_je = replace( ls_je, ll_len - 1, 1, '''' )

for i = ll_len to 1 step -1

lmax -= 2

ls_dw = mid( ls_bit, lmax, 2 )

k = long( mid( ls_je, i, 1 ) )

if k = 0 then

choose case ls_dw

case ''元'',''萬'',''億''

ls_result = ls_dw + ls_result

case ''分''

ls_result = ''整''

case ''角''

if ls_result <> ''整'' then ls_result = ''零'' + ls_result

case else

choose case left( ls_result, 2 )

case ''萬'', ''億'', ''元'', ''零''

ls_result = ''零'' + ls_result

end choose

else

ls_result = mid( ls_num, k * 2 - 1, 2 ) + ls_dw + ls_result

end if

next

return ls_result

--------------------------------------------------------

//入口參數:DECIMAL numb

INTEGER i //循環變量

STRING s_numb //以字元串表示

STRING s_money

INTEGER i1

s_numb = String(numb,"########.00")

IF Len(s_numb) < 11 THEN s_numb = Space(11-len(s_numb))+s_numb

i = 1

s_money = ""

//去掉前導空格

DO WHILE i<8 AND Mid(s_numb,i,1) = " "

i ++

LOOP

i1 = 11 - i + 1

INTEGER digit

DO WHILE i<=4

digit = Integer(Mid(s_numb,i,1))

IF digit = 0 THEN

IF digit <>0 THEN exit

IF i<=4 THEN s_money += "零"

ELSE

s_money += Mid("壹貳叁肆伍陸柒捌玖",digit*2-1,2) +&

Mid("仟佰拾萬",i*2-1,2)

END IF

IF i1 >= 8 THEN

IF Integer(Mid(s_numb,4,1)) = 0 THEN s_money += "萬"

DO WHILE i<=8

IF digit<>0 THEN exit

IF i<=8 THEN

s_money += "零"

IF Integer(Mid(s_numb,1,8)) <> 0 THEN

s_money += "元"

IF Integer(Mid(s_numb,11,1))<>0 THEN s_money += "零"

IF digit <> 0 THEN

s_money += Mid("壹貳叁肆伍陸柒捌玖",digit*2-1,2) + &

Mid("仟佰拾萬仟佰拾元",i*2-1,2)

digit = Integer(Mid(s_numb,10,1))

IF digit<>0 THEN

s_money += Mid("壹貳叁肆伍陸柒捌玖",digit*2-1,2) + "角"

IF Integer(Mid(s_numb,11,1))<>0 AND Integer(Mid(s_numb,1,9)) <> 0 THEN

digit = Integer(Mid(s_numb,11,1))

s_money += Mid("壹貳叁肆伍陸柒捌玖",digit*2-1,2) + "分"

IF Len(Trim(s_money)) <> 0 THEN s_money += "整"

RETURN s_money

版權

作者:靈動生活 郝憲玮

如果你認為此文章有用,請點選底端的【推薦】讓其他人也了解此文章,

程式員筆試題- 将人民币金額轉換成大寫的金額

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

繼續閱讀