您的位置:首页 > 其它

小写金额转换成大写金额

2007-06-04 09:38 399 查看
//**************************************************************************
//功能: 小写金额转换成大写金额 .
//参数: 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: