| 发表于:2007-06-12 11:20:43 楼主 |
我在支票程序中用如下语句转化大写,一般情况下没什么问题,但是到千位和十位都是零的时候,千位的零不显示。结果被银行退回来了,郁闷啊。举例:30801,我的软件显示为“叁万捌佰零壹圆整”,银行认为是“叁万零捌佰零壹圆整”。 跪求各位高手帮我看看下面的语句。谢谢! 我知道问题出在倒数第五行,但不知道怎么在现有结构基础上修改,请高手帮忙! c1 = "零壹贰叁肆伍陆柒捌玖 " c2 = "拾佰仟 " private function rmb(s as currency) as string dim str0 as string, strfen as string, stryuan as string, strwan as string, stryi as string dim strwanyi as string dim strtemp as string dim lpoint as integer dim flag as boolean if abs(s) < 0.01 then rmb = "零 ": exit function str0 = ltrim(str$(abs(s))) lpoint = instrrev(str0, ". ") if lpoint = 0 then str0 = str0 & ".00 " else str0 = left(str0 & "00 ", lpoint + 2) end if strfen = right(str0, 2) stryuan = left(str0, len(str0) - 3) if val(stryuan) = 0 then flag = true if len(stryuan) > 4 then strwan = left(stryuan, len(stryuan) - 4) stryuan = right(stryuan, 4) end if if len(strwan) > 4 then stryi = left(strwan, len(strwan) - 4) strwan = right(strwan, 4) end if if len(stryi) > 4 then strwanyi = left(stryi, len(stryi) - 4) stryi = right(stryi, 4) end if if right(strfen, 1) = "0 " then strtemp = "整 " if left(strfen, 1) <> "0 " then strtemp = mid(c1, val(left(strfen, 1)) + 1, 1) & "角整 " else if left(strfen, 1) = "0 " then if flag then strtemp = mid(c1, val(right(strfen, 1)) + 1, 1) & "分 " else strtemp = "零 " & mid(c1, val(right(strfen, 1)) + 1, 1) & "分 " end if else strtemp = mid(c1, val(left(strfen, 1)) + 1, 1) & "角 " & mid(c1, val(right(strfen, 1)) + 1, 1) & "分 " end if end if if stryuan <> " " then strtemp = change(stryuan) & "元 " & strtemp if strwan <> " " and val(strwan) <> 0 then strtemp = change(strwan) & "万 " & strtemp if stryi <> " " then strtemp = change(stryi) & "亿 " & strtemp if strwanyi <> " " then strtemp = change(strwanyi) & "万 " & strtemp rmb = strtemp exit function end function private function change(s as string) as string dim c as string, str as string dim l as integer, i as integer dim f1 as boolean, f2 as boolean str = " " f1 = false f2 = false l = len(s) if right(s, 1) <> "0 " then str = mid(c1, val(right(s, 1)) + 1, 1) f1 = true end if for i = l - 1 to 1 step -1 c = mid(s, i, 1) if c <> "0 " then str = mid(c1, val(c) + 1, 1) & mid(c2, l - i, 1) & str f1 = true else if f1 and (not f2) then str = "零 " & str: f2 = true end if next i change = str end function |
|
|
|
|