回 帖 发 新 帖 刷新版面

主题:表格显示如何去掉小数点后面多余的 0

如 1.000 只显示 1
   0.250 只显示 0.25

回复列表 (共4个回复)

沙发

?
?
a=1.000
?a
b=STR(a,12,3)
c=' '
DO WHILE .t.
   c=RIGHT(b,1)
   IF c="."
      b=SUBSTR(b,1,(LEN(b)-1))
   ENDIF
   IF c<>"0" 
       EXIT
   ENDIF
   b=SUBSTR(b,1,(LEN(b)-1))
ENDDO
?b

板凳

nval=120.000
?IIF(nVal%1=0,LTRIM(STR(nval,16)),TRIM(TRAN(nval),1,"0"))

3 楼

解决这个问题,首先要计算出小数位数,然后使用round()函数四舍五入

?dec_length(0.4000)            && 1
?dec_length(123.4560)          && 3

rx=0.250
dx=round(rx,dec_length(rx))    && 这样就能显示0.25了






*******************************************************************************
** FileName     :  dec_length.prg
**
** Author       :  wuzhouhong
**
** LastEdit     :  2004年12月08日
**
** Action       :  返回此数字的小数个数
**
** Syntax       :  dec_length(nNumber)
**  Explanation :  nNumber=要求小数位数的数字
**
** Return       :  <N>
*******************************************************************************
Parameters nNumber
Local result , tmp_num
m.result = 0
m.tmp_num = m.nNumber-INT(m.nNumber)

do while m.tmp_num<>Int(m.tmp_num)
    m.tmp_num = m.tmp_num*10
    m.result = m.result + 1
enddo

return m.result

4 楼

2 楼  cbl518老师只一句话,妙!我也写了一句,如下:但两句都有一问题:表格中的单元格变成只读了(见图右下角),怎么也输不了数据,弄了半天没搞好,还望指教!!
    .COLUMN2.ControlSource=IIF(jlian%1=0,LTRIM(STR(jlian,16)),TRIM(TRAN(jlian),1,"0")) 
    .COLUMN2.ControlSource="EVALUATE(strt(trim(strt(strt(trim(strt(allt(str(jlian,18,8)),'0',' ')),' ','0'),'.',' ')),' ','.'))"

[img]http://blog.pfan.cn/upfile/200901/2009013118584.jpg[/img]

我来回复

您尚未登录,请登录后再回复。点此登录或注册