FOXPRO的难题?

zhangg 2000-03-28 08:47:00
我做的报表的数值是小数点后三位,要求是如果小数点后的数值如果为零,则去除。
列:89.000为89 345.090 为345.09 .
即实现自动去零。请给予指导!!!!
...全文
126 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xblky 2000-04-04
  • 打赏
  • 举报
回复
该数值的处理一般是按照字符进行处理,给你另一种处理方法:
********************
e=''
a=1234.907
DO mxb with a,e
? e
********************
proc mxb
lpara a,e
b=a*100-int(a*100)
c=a*10-int(a*10)
d=a-int(a)
if b>0
e=alltrim(str(int(a))+'.'+right(str(a*1000),3))
else
if b=0.and.c>0
e=alltrim(str(int(a))+'.'+right(str(int(a*100)),2))
else
if b=0.and.c=0.and.d>0
e=alltrim(str(int(a))+'.'+right(str(int(a*10)),1))
else
if b=0.and.c=0.and.d=0
e=alltrim(str(int(a)))
endif
endif
endif
endif
return e
endproc

neil 2000-03-28
  • 打赏
  • 举报
回复
首先,该数值的处理一般是按照字符进行处理,所以其处理方法有很多种,
给你其中一种处理方法的过程:
para b
a=alltr(str(b,12,3)) &&假定你最长数字为12位,小数为三位
do whil "."$a
if right(a,1)<>"." and right(a,1)=="0"
a=substrc(a,1,len(a)-1)
else
if right(a,1)=="."
a=substrc(a,1,len(a)-1)
endif
exit
endif
enddo
return a
*-------------end

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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