去除水晶报表小数点最后多余的0

来源:互联网 发布:mac下兼容ie的浏览器 编辑:程序博客网 时间:2024/05/10 07:10

1、新建自定义函数TrimPointZero

2、编写函数体 如下:

Function (stringVar  str)
//如果不是数字型 返回原来的值日
if not NumericText(str)  then
   str
else
(  
    numbervar iPointNum:=InStr (str, '.');//判断该数字是不是含有小数点
    //如果没有小数点 返回原来的值
    if iPointNum<=0 then
       str   
    else
    (
        //把小数点根据小数点号分隔成数组      
        stringvar array strs:=Split (str,".");
        
        stringvar strres:=strs[2]; //数字小数点部分的字符串

        numbervar j:=0;//小数点最后面0数量
        Local NumberVar i;//变量循环
         //循环得到小数点最后面0数量
        for i :=length(strres) to 1 step -1 do
        (       
            if mid(strres,i,1)<>'0' then
               i:=0
            else        
               j:=j+1;       
        );

        if j=length(strres) then//如果最后全部为0 返回整数
        (
            if iPointNum=1 then
            (
                '0'
            )
            else
                strs[1]
        )
        else
        (   
            if iPointNum=1 then
            (
                '0'+'.'+mid(strres,1,length(strres)-j)
            )
            else      
                strs[1]+'.'+mid(strres,1,length(strres)-j)
        )
     )
)
 3、完成调用