主题:表格显示如何去掉小数点后面多余的 0
lzguang
[专家分:1210] 发布于 2009-01-20 16:52:00
如 1.000 只显示 1
0.250 只显示 0.25
回复列表 (共4个回复)
沙发
foxdb [专家分:1830] 发布于 2009-01-20 19:58:00
?
?
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
板凳
cbl518 [专家分:57140] 发布于 2009-01-21 10:33:00
nval=120.000
?IIF(nVal%1=0,LTRIM(STR(nval,16)),TRIM(TRAN(nval),1,"0"))
3 楼
wuzhouhong [专家分:10890] 发布于 2009-01-22 11:14:00
解决这个问题,首先要计算出小数位数,然后使用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 楼
lzguang [专家分:1210] 发布于 2009-01-22 11:33:00
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]
我来回复