PB金額大小寫轉換

 //==============================================================================
// 函數: f_getBigMoney()
//------------------------------------------------------------------------------
// 描述: 返回大寫金額
//------------------------------------------------------------------------------
// 參數:
//        value    decimal    adec_money        待轉換爲大寫的金額
//------------------------------------------------------------------------------
// 返回值:  string
//------------------------------------------------------------------------------
// 作者:    Ran(Sunday_hl)        日期: 2006.08.22
//------------------------------------------------------------------------------
// 修改歷史:
//    
//==============================================================================
String ls_num[]  = {"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"} ;
String ls_unit[] = {"分","角","","元","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟","萬"} ;
String ls_dec,ls_return,ls_char ;
Integer li_index,li_num ;
Decimal{2} ldec_arg,ldec_xs ;

ldec_arg = adec_money ;
//如果爲零,直接返回“零”
IF IsNull(ldec_arg) OR ldec_arg = 0.00 THEN RETURN ls_num[1] ;
//取小數,如果沒小數 那麼顯示多少元整
ldec_xs = Mod(ldec_arg,1)
IF ldec_xs = 0.00 THEN ls_return = "整" ;
//把金額轉換爲字符串,並且把字符串倒置過來
ls_dec = Reverse(String(ldec_arg,"##0.00")) ;
//從低位向高位 逐位提取
FOR li_index = 1 TO Len(ls_dec)
    IF li_index > UpperBound(ls_unit) THEN EXIT ;
    //取得當前位,如果不是數字(如 .) 就進入下一循環    
    ls_char = Mid(ls_dec,li_index,1) ;
    IF NOT IsNumber(ls_char) THEN CONTINUE ;
    //把取得的當前位 轉換爲數值型
    li_num = Integer(ls_char) ;
    //如果當前位不爲0,或要轉換的金額不足一元,或者在小數(如果有的話)的時候,直接顯示數值加單位
    If (li_num <> 0 OR ldec_arg < 1 Or (li_index < 4 AND ldec_xs > 0.00)) THEN
        ls_return = ls_num[li_num + 1] + ls_unit[li_index] + ls_return ;
    ElseIf (li_index = 4 OR li_index = 8 OR li_index = 12) THEN
        //如果當前位爲0,且在個位、萬位、億位的時候加上單位
        IF li_index = 8 AND Len(ls_dec) >= 12 THEN CONTINUE ;
        ls_return = ls_unit[li_index] + ls_return ;
    ELSEIF Integer(Mid(ls_dec,li_index - 1,1)) <> 0  THEN
        //如果當前位爲0,且前一位不爲0,那麼加上 “零”
        ls_return = ls_num[li_num + 1] + ls_return ;
    END IF
NEXT
//返回所轉換得到的金額
RETURN ls_return ;

發佈了20 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章