PowerBuilder -- 數字金額大寫
阿新 • • 發佈:2017-07-31
cnblogs decimal logs () car mod 轉換 返回 clas
//==================================================================== // 事件: .pub_fc_change_number() //-------------------------------------------------------------------- // 描述: 數字轉換成大寫 //-------------------------------------------------------------------- // 參數: // decimal number //--------------------------------------------------------------------// 返回: string//-------------------------------------------------------------------- // 修改歷史: // //==================================================================== String cn_num[10] = {"零","壹","貳","叁","肆","伍","陸","柒","捌","玖"} //大寫0-9 String cn_carry[19] = {"分","角","","元","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟","萬","拾","佰","仟"} //單位 String ls_pos,ls_old,ls_number,ls_rc = ‘‘, ls_zero, ls_zero_unit Integer li_i,li_len //循環變量 String ls_zf = ‘‘ //正負符號 String ls_value, ls_z Boolean lb_zero_yuan //參數格式化 If ade_number < 0 Then ls_zf = ‘負‘ ade_number = (-1)*ade_number End If ls_number = String(ade_number,"0.00") //參數的長度 li_len = Len(ls_number) ls_zero = ‘‘ ls_zero_unit = ‘‘ lb_zero_yuan = False ls_z = ‘‘ //轉換為大寫(發票格式),從右到左 For li_i = 1 To li_len ls_value = Mid(ls_number, li_len - li_i + 1, 1) If li_i = 1 And ls_value = ‘0‘ Then // 分 為0 ls_z = ‘整‘ Continue End If If li_i = 2 And ls_value = ‘0‘ And ls_z <> ‘整‘ Then // 角 為0, 分不為 0 ls_rc = ‘零‘ + ls_rc Continue End If // 小數點 If li_i = 3 Then Continue // 萬與元,億與萬之間 存在 0 If (li_i = 8 Or li_i = 12) And ls_zero = ‘零‘ Then ls_rc = ‘零‘ + ls_rc ls_zero = ‘‘ End If // 元 萬 億 為0 If li_len > 4 And (li_i = 4 Or li_i = 8 Or li_i = 12) And ls_value = ‘0‘ Then ls_rc = cn_carry[li_i] + ls_rc lb_zero_yuan = True Continue End If // 萬與元,億與萬之間 存在 0 If li_len > 5 And li_i > 4 And ls_value = ‘0‘ And ls_zero = ‘‘ And Not lb_zero_yuan Then ls_zero = ‘零‘ End If If ls_value <> ‘0‘ Or li_i = 4 Then ls_rc = cn_num[1 + Mod(Integer(ls_value), 10)] + cn_carry[li_i] + ls_zero + ls_rc ls_zero = ‘‘ lb_zero_yuan = False End If Next ls_rc = ls_zf + ls_rc + ls_z Return ls_rc //返回結果 100100.11 100100100.11 10010100100.11
PowerBuilder -- 數字金額大寫