小写金额转换成大写金额

//**************************************************************************
//功能: 小写金额转换成大写金额 .
//参数: decvalue: Decimal, 小写金额 .
//返回: String , 成功返回大写金额 , 否则返回空 .
//说明: 金额不能大于 15 位 ( 即千亿 ) , 形式如 '### ### ### ##0 .00'
//**************************************************************************

boolean lb_first_zero
int li_1 , li_len
string ls_hz1[] , ls_hz2[] , ls_Return , ls_temp , ls_argument

ls_hz1[1]  = "分"
ls_hz1[2]  = "角"
ls_hz1[3]  = ""
ls_hz1[4]  = "元"
ls_hz1[5]  = "拾"
ls_hz1[6]  = "佰"
ls_hz1[7]  = "仟"
ls_hz1[8]  = "万"
ls_hz1[9]  = "拾"
ls_hz1[10] = "佰"
ls_hz1[11] = "仟"
ls_hz1[12] = "亿"
ls_hz1[13] = "拾"
ls_hz1[14] = "佰"
ls_hz1[15] = "仟"

ls_hz2[1]  = "壹"
ls_hz2[2]  = "贰"
ls_hz2[3]  = "叁"
ls_hz2[4]  = "肆"
ls_hz2[5]  = "伍"
ls_hz2[6]  = "陆"
ls_hz2[7]  = "柒"
ls_hz2[8]  = "捌"
ls_hz2[9]  = "玖"
ls_hz2[10] = "零"


IF decvalue = 0 THEN
Return ''
END IF

ls_argument = string( decvalue ,"############0.00")

// 数值不能大于千亿
IF len( ls_argument ) > 15 THEN
Return ''
END IF

IF right( ls_argument , 1 ) = '0' THEN ls_Return = '整'

// 开始循环 , 处理方式为: Right --> Left
Do While True
 li_1 += 1
 li_len = len( ls_argument )
 ls_temp = right( ls_argument , 1 )
 ls_argument = left( ls_argument , li_len - 1 )
 
 // 右取值为空.点.负号时
 IF ls_temp = '' or isnull( ls_temp ) THEN
  Exit
 END IF
 IF ls_temp = '.' THEN
  continue
 END IF
 IF ls_temp = '-' THEN
  ls_Return = '负' + ls_Return
  continue
 END IF
 
 // 右取值不为 0 .
 IF ls_temp <> '0' THEN
  ls_Return = ls_hz2[ integer(ls_temp) ] + ls_hz1[ li_1 ] + ls_Return 
  lb_first_zero = True
 Else
  IF lb_first_zero THEN
   IF (li_1 <> 4 and li_1 <> 2) or dec(ls_argument) <> 0 THEN
    ls_Return = '零' + ls_Return
   END IF
   lb_first_zero = false
  END IF
  IF li_1 = 12 or li_1 = 8 THEN
   IF right(ls_argument, 3) <> '000' THEN ls_Return = ls_hz1[ li_1] + ls_Return
  END IF
  IF li_1 = 4 THEN
   IF dec(ls_argument) <> 0 THEN ls_Return = ls_hz1[ li_1 ] + ls_Return
  END IF
 END IF

Loop

Return ls_Return  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值