PB10下使用money2string的问题!

YewPu 2009-05-20 02:43:42
//////////////////////////////////////////////////////////////////////
//
// 将钱数转化为大写
//
//////////////////////////////////////////////////////////////////////
constant string ls_bit = "万仟佰拾亿仟佰拾万仟佰拾元角分"
constant string ls_num = "壹贰叁肆伍陆柒捌玖"
long lmax = lena( ls_bit ) + 1
string ls_je, ls_dw, ls_result = ''
long ll_len, i, k

ls_je = string( data, "#############.00" )
ll_len = lena( ls_je ) - 1
ls_je = replacea( ls_je, ll_len - 1, 1, '' )
for i = ll_len to 1 step -1
lmax -= 2
ls_dw = mida( ls_bit, lmax, 2 )
k = long( mida( ls_je, i, 1 ) )
if k = 0 then
choose case ls_dw
case '元','万','亿'
ls_result = ls_dw + ls_result
case '分'
ls_result = '整'
case '角'
if ls_result <> '整' then ls_result = '零' + ls_result
case else
choose case left( ls_result, 2 )
case '万', '亿', '元', '零'
case else
ls_result = '零' + ls_result
end choose
end choose
else
ls_result = mida( ls_num, k * 2 - 1, 2 ) + ls_dw + ls_result
end if
next
return ls_result
...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2009-05-28
  • 打赏
  • 举报
回复
//////////////////////////////////////////////////////////////////////
//
// 将钱数转化为大写
//
//////////////////////////////////////////////////////////////////////
constant string ls_bit = "万仟佰拾亿仟佰拾万仟佰拾元角分"
constant string ls_num = "壹贰叁肆伍陆柒捌玖"
long lmax = lena( ls_bit ) + 1
string ls_je, ls_dw, ls_result = ''
long ll_len, i, k

ls_je = string( data, "#############.00" )
ll_len = lena( ls_je ) - 1
ls_je = replacea( ls_je, ll_len - 1, 1, '' )
for i = ll_len to 1 step -1
lmax -= 2
ls_dw = mida( ls_bit, lmax, 2 )
k = long( mida( ls_je, i, 1 ) )
if k = 0 then
choose case ls_dw
case '元','万','亿'
ls_result = ls_dw + ls_result
case '分'
ls_result = '整'
case '角'
if ls_result <> '整' then ls_result = '零' + ls_result
case else
choose case lefta( ls_result, 2 )
case '万', '亿', '元', '零'
case else
ls_result = '零' + ls_result
end choose
end choose
else
ls_result = mida( ls_num, k * 2 - 1, 2 ) + ls_dw + ls_result
end if
next
return ls_result

呵呵,应该是left的问题,改为lefta即可解决
shouhuzhe 2009-05-22
  • 打赏
  • 举报
回复
对字符串求长度是 加个A

我这有个我一直用的,共享给你

哦,解决了,那算了
newease 2009-05-21
  • 打赏
  • 举报
回复
将PB9 代码 升级到PB10

在DBCS环境下,以前用len、mid、left等字符操作函数,都需要改为相应*A的格式。
YewPu 2009-05-21
  • 打赏
  • 举报
回复
贴子一贴上去没五分钟就查出LEFT的问题,
永生天地 2009-05-20
  • 打赏
  • 举报
回复
//////////////////////////////////////////////////////////////////////
//
// 将钱数转化为大写 注改了一个函数 left -> lefta
//
//////////////////////////////////////////////////////////////////////
constant string ls_bit = "万仟佰拾亿仟佰拾万仟佰拾元角分"
constant string ls_num = "壹贰叁肆伍陆柒捌玖"
long lmax = lena( ls_bit ) + 1
string ls_je, ls_dw, ls_result = ''
long ll_len, i, k

ls_je = string( data, "#############.00" )
ll_len = lena( ls_je ) - 1
ls_je = replacea( ls_je, ll_len - 1, 1, '' )
for i = ll_len to 1 step -1
lmax -= 2
ls_dw = mida( ls_bit, lmax, 2 )
k = long( mida( ls_je, i, 1 ) )
if k = 0 then
choose case ls_dw
case '元','万','亿'
ls_result = ls_dw + ls_result
case '分'
ls_result = '整'
case '角'
if ls_result <> '整' then ls_result = '零' + ls_result
case else
choose case lefta( ls_result, 2 )
case '万', '亿', '元', '零'
case else
ls_result = '零' + ls_result
end choose
end choose
else
ls_result = mida( ls_num, k * 2 - 1, 2 ) + ls_dw + ls_result
end if
next
return ls_result
YewPu 2009-05-20
  • 打赏
  • 举报
回复
如上:此语法在PB10以下使用正常。但在PB10以上使用就出问题啦。
如10001,即显示
壹万零壹才对,
但他就显示壹万零零零壹。

1,076

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧