740
社区成员
发帖
与我相关
我的任务
分享
//**************************************************
//函数 f_numberupper
//参数 adec 类型decimal, rmb 类型boolean
// adec 金额,rmb数字是否大写
//返回 汉字金额
//**************************************************
string hz[15]
string money[2]
string val, num2, num
string str = '', str_tmp
int i, lpos, il_i
IF NOT rmb THEN
hz[1] = '一'
hz[2] = '二'
hz[3] = '三'
hz[4] = '四'
hz[5] = '五'
hz[6] = '六'
hz[7] = '七'
hz[8] = '八'
hz[9] = '九'
hz[10] = '十'
hz[11] = '百'
hz[12] = '千'
hz[13] = '万'
hz[14] = '亿'
hz[15] = '点'
ELSE
hz[1] = '壹'
hz[2] = '贰'
hz[3] = '叁'
hz[4] = '肆'
hz[5] = '伍'
hz[6] = '陆'
hz[7] = '柒'
hz[8] = '捌'
hz[9] = '玖'
hz[10] = '拾'
hz[11] = '佰'
hz[12] = '仟'
hz[13] = '万'
hz[14] = '亿'
hz[15] = '元'
money[1] = '角'
money[2] = '分'
END IF
num = string( adec, "0.00" )
val = num
DO WHILE left( val, 1 ) = '0'
val = right( val, len(val) - 1 )
loop
IF pos( val, '.' ) <> 0 THEN
num = left(val, pos(val,'.') - 1 )
num2 = mid(val, pos(val,'.') + 1 )
END IF
fOR i = 1 to len(num)
str_tmp = mid( num, i, 1 )
CHOOSE CASE str_tmp
CASE '1'
str = str + hz[1]
CASE '2'
str = str + hz[2]
CASE '3'
str = str + hz[3]
CASE '4'
str = str + hz[4]
CASE '5'
str = str + hz[5]
CASE '6'
str = str + hz[6]
CASE '7'
str = str + hz[7]
CASE '8'
str = str + hz[8]
CASE '9'
str = str + hz[9]
CASE '0'
str = str + ''
END CHOOSE
IF str_tmp='0' THEN
IF right( str, 1 ) = '零' OR str = '' OR i = len(num) THEN
str = str
ELSE
str = str + '零'
END IF
ELSE
CHOOSE CASE len(num) - i + 1
CASE 1
str = str
CASE 2,6,10
str = str + hz[10]
CASE 3,7,11
str = str + hz[11]
CASE 4,8,12
str = str + hz[12]
CASE 5,13
str = str + hz[13]
CASE 9
str = str + '亿'
END CHOOSE
END IF
IF len(num) -i +1 = 9 AND mid(num ,len(num) - 8,1) = '0' THEN
IF right(str,1) = '零' THEN str = left( str, lenw(str) - 1 )
str = str + '亿'
END IF
IF len(num) - i + 1 = 5 AND mid(num ,len(num) - 4 , 1 ) = '0' THEN
IF right(str,1)='零' THEN str = left( str, lenw(str) - 1 )
IF left( right( '0000' + num, 8 ), 4 ) = '0000' THEN
str = str
ELSE
str = str + '万'
END IF
END IF
NEXT
IF right(str,1) = '零' THEN
str = left( str, lenw(str) - 1 )
END IF
IF left(str,2) = '一十' OR left(str,2) = '壹拾' THEN str = right( str, lenw(str) - 1 )
lpos = pos(str,'亿万')
IF lpos <> 0 THEN
str = left( str , lpos + 1 ) + mid( str, lpos + 4 )
END IF
IF pos(val,'.') =0 THEN
IF rmb THEN
RETURN str + hz[15]
ELSE
RETURN str
END IF
END IF
str = str + hz[15] //点OR 元
il_i = len(num2)
IF rmb AND il_I > 2 THEN
il_i = 2
END IF
fOR i = 1 to il_i
str_tmp = mid(num2,i,1)
CHOOSE CASE str_tmp
CASE '1'
str = str + hz[1]
CASE '2'
str = str + hz[2]
CASE '3'
str = str + hz[3]
CASE '4'
str = str + hz[4]
CASE '5'
str = str + hz[5]
CASE '6'
str = str + hz[6]
CASE '7'
str = str + hz[7]
CASE '8'
str = str + hz[8]
CASE '9'
str = str + hz[9]
CASE '0'
str = str + '零'
END CHOOSE
IF rmb AND right( str, 2 ) <> '零' THEN str = str + money[i]
NEXT
DO WHILE right( str, 1 ) = '零'
str = left( str, lenw(str) - 2 )
loop
IF rmb AND num2 = "00" THEN str = str +'整'
RETURN str