数字到英文金额的转换PB

/*file name:change.pbl
 *函数:numberToEnglishAmt()
 *功能:数字变成英文字母金额
 *代码:PowerBuilder
 *参数类型和返回类型
 *string numberToEnglishAmt(decimal money)
*/

string s,s_left,s_right,s_left1,s_left2,s_left3,s_left4,s_left5,s_left6
string a,b,c,d,e,f,g
money=round(money,2)
s=string(money)
long l
l=len(s)
s_right=right(s,3)
s_left=left(s,len(s)-3)
s_right=right(s,2)
s_right=getWord(s_right)
l=l - 5
if l=7 then
    s_left1=right(s_left,2)
    s_left1=getWord(s_left1)
    s_left2=mid(s,l,1)
    s_left2=getWord(s_left2)
    l=l - 1
    l=l - 2    
    s_left3=mid(s,l+1,2)
    s_left3=getWord(s_left3)
    l=l - 1
    s_left4=mid(s,l+1,1)
    s_left4=getWord(s_left4)
    l=l - 2
    s_left5=mid(s,l+1,2)
    s_left5=getWord(s_left5)
    l=l - 1
    s_left6=mid(s,l+1,1)
    s_left6=getWord(s_left6)
elseif l=6 then
    s_left1=right(s_left,2)
    s_left1=getWord(s_left1)
    s_left2=mid(s,l,1)
    s_left2=getWord(s_left2)
    l=l - 1
    l=l - 2    
    s_left3=mid(s,l+1,2)
    s_left3=getWord(s_left3)
    l=l - 1
    s_left4=mid(s,l+1,1)
    s_left4=getWord(s_left4)
    l=l - 2
    s_left5=mid(s,l+1,2)
    s_left5=getWord(s_left5)
elseif l=5 then
    s_left1=right(s_left,2)
    s_left1=getWord(s_left1)
    s_left2=mid(s,l,1)
    s_left2=getWord(s_left2)
    l=l - 1
    l=l - 2    
    s_left3=mid(s,l+1,2)
    s_left3=getWord(s_left3)
    l=l - 1
    s_left4=mid(s,l+1,1)
    s_left4=getWord(s_left4)
    l=l - 2
    s_left5=mid(s,l+1,1)
    s_left5=getWord(s_left5)
elseif l=4 then
    s_left1=right(s_left,2)
    s_left1=getWord(s_left1)
    s_left2=mid(s,l,1)
    s_left2=getWord(s_left2)
    l=l - 1
    l=l - 2    
    s_left3=mid(s,l+1,2)
    s_left3=getWord(s_left3)
    l=l - 1
    s_left4=mid(s,l+1,1)
    s_left4=getWord(s_left4)
elseif l=3 then
    s_left1=right(s_left,2)
    s_left1=getWord(s_left1)
    s_left2=mid(s,l,1)
    s_left2=getWord(s_left2)
    l=l - 1
    l=l - 2    
    s_left3=mid(s,l+1,2)
    s_left3=getWord(s_left3)
elseif l=2 then
    s_left1=right(s_left,2)
    s_left1=getWord(s_left1)
    s_left2=mid(s,l,1)
    s_left2=getWord(s_left2)
    l=l - 1
    l=l - 2    
    s_left3=mid(s,l+1,1)
    s_left3=getWord(s_left3)
elseif l=1 then
    s_left1=right(s_left,2)
    s_left1=getWord(s_left1)
    s_left2=mid(s,l,1)
    s_left2=getWord(s_left2)
    l=l - 1
elseif l=0 then
    s_left1=right(s_left,2)
    s_left1=getWord(s_left1)
elseif l=-1 then
    s_left1=right(s_left,1)
    s_left1=getWord(s_left1)
//elseif l=-2 then
end if    
a=s_left6
b=s_left5
c=s_left4
d=s_left3
e=s_left2
f=s_left1
if a<>"" then
    a=a+" HUNDRED "
else
    a=""
end if

if a='' and b='' then
    b=''
else
    b=b+" MILLION "
end if

if a='' and b='' and c='' then
    c=''
else
    c=c+" HUNDRED "
end if

if a='' and b='' and c='' and d='' then
    d=''
else
    d=d+" THOUSAND AND "
end if

if e<>"" then
    e=e+" HUNDRED "
else
    e=""
end if
g=s_right
if g<>"" then
    if a="" and b="" and c="" and d="" and e="" and f="" then
        g=" CENTS "+g
    else
        g=" AND CENTS "+g
    end if
else
    g=""
end if
s=a+b+c+d+e+f+g+" ONLY"
return S

/******************************************************************/
/*file name:change.pbl
 *函数:getWord()
 *功能:数字金额变成英文式金额函数
 *代码:PowerBuilder
 *参数类型和返回类型
 *string getWord(string in)
*/
string s_right,s_left,s

s=in
if long(s)<21 then
    choose case long(s)
    case 1
        s_right="ONE"
    case 2
        s_right="TWO"
    case 3
        s_right="THREE"
    case 4
        s_right="FOUR"
    case 5
        s_right="FIVE"
    case 6
        s_right="SIX"
    case 7
        s_right="SEVEN"
    case 8
        s_right="EIGHT"
    case 9
        s_right="NINE"
    case 10
        s_right="TEN"
    case 11
        s_right="ELEVEN"
    case 12
        s_right="TWELVE"
    case 13
        s_right="THIRTEEN"
    case 14
        s_right="FOURTEEN"
    case 15
        s_right="FIFTEEN"
    case 16
        s_right="SIXTEEN"
    case 17
        s_right="SEVENTEEN"
    case 18
        s_right="EIGHTEEN"
    case 19
        s_right="NINETEEN"
    case 20
        s_right="TWENTY"
    END CHOOSE
    s=s_right
elseif long(s)>20 and long(s)<100 then
    choose case right(string(s),1)
        case "1"
            s_right="ONE"
        case "2"
            s_right="TWO"
        case "3"
            s_right="THREE"
        case "4"
            s_right="FOUR"
        case "5"
            s_right="FIVE"
        case "6"
            s_right="SIX"
        case "7"
            s_right="SEVEN"
        case "8"
            s_right="EIGHT"
        case "9"
            s_right="NINE"
    end choose
    choose case left(string(s),1)
        case "2"
            s_left="TWENTY"
        case "3"
            s_left="THIRTY"
        case "4"
            s_left="FORTY"
        case "5"
            s_left="FIFTY"
        case "6"
            s_left="SIXTY"
        case "7"
            s_left="SEVENTY"
        case "8"
            s_left="EIGHTY"
        case "9"
            s_left="NINETY"
    END CHOOSE
s=s_left+" "+s_right
end if    
return s


/******************************************************************/
应用例子:
金额为136,233.78
翻译结果如下:
ONE HUNDRED THIRTY SIX THOUSAND AND TWO HUNDRED THIRTY THREE AND CENTS SEVENTY EIGHT ONLY

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值