743
社区成员
发帖
与我相关
我的任务
分享IF NOT rmb THEN
//hz[] = {'一','二','三','四','五','六','七','八','九','十','百','千','万','亿','点'}
hz[] = {'壹','贰','叁','肆','伍','陆','柒','捌','玖','拾','百','千','万','亿','点'}
ELSE
hz[] = {'壹','贰','叁','肆','伍','陆','柒','捌','玖','拾','佰','仟','万','亿','元'}
money[] = {'角','分'}
END IF//====================================================================
// 函数: f_numberupper()
//--------------------------------------------------------------------
// 描述:小写金额转汉字金额
//--------------------------------------------------------------------
// 参数:
// value decimal adec
// value boolean rmb
//--------------------------------------------------------------------
// 返回: string
//--------------------------------------------------------------------
// 作者: liubocy 日期: 2008年12月13日
//--------------------------------------------------------------------
// 示例:f_numberupper( 150.65, True )
//====================================================================
string hz[15]
string money[2]
string val, num2, num
string str_tmp, str = ''
int i, lpos, il_i
IF NOT rmb THEN
hz[] = {'一','二','三','四','五','六','七','八','九','十','百','千','万','亿','点'}
ELSE
hz[] = {'壹','贰','叁','肆','伍','陆','柒','捌','玖','拾','佰','仟','万','亿','元'}
money[] = {'角','分'}
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