| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3105 人关注过本帖
标题:取数值型数据的长度?
只看楼主 加入收藏
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
结帖率:91.53%
收藏
已结贴  问题点数:20 回复次数:15 
取数值型数据的长度?
不一定是多大的数,肯定是有小数部门

想知道这个数的个位是几位,小数点后是几位  

怎么做  。。。
搜索更多相关主题的帖子: 小数点 
2016-01-12 04:56
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
aa='123.40'
?len(alltrim(aa))-IIF(at(".",alltrim(aa))=0,len(alltrim(aa)),at(".",alltrim(aa)))

[此贴子已经被作者于2016-1-12 07:49编辑过]

2016-01-12 07:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:5 
sn = TRANSFORM(12345.67890)
? JUSTSTEM(sn)
? JUSTEXT(sn)
2016-01-12 07:42
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:5 
回复 3楼 吹水佬
此方法简单可行。但有一点:transform(10.00)会转化为“10”,丢掉了小数位“00”,不知道这是否满足要求。
对于一个数值型常数或内在变量来说,你无法判断 10 与 10.00 的区别。
但是对于字段变量来说,是可以区分 10 与 10.00 的。参考如下:

USE 表1
SET FIELD TO 字段1
= AFIELDS(aFld)
SET FIELD TO ALL
cValue = LTRIM(STR(字段1,aFld(3),aFld(4)))
? '字段的整数部分:'+JUSTSTEM(cValue)
? '字段的小数部分:'+JUSTEXT(cValue)

泉城飞狐
2016-01-12 09:10
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用吹水佬在2016-1-12 07:42:45的发言:

sn = TRANSFORM(12345.67890)
? JUSTSTEM(sn)
? JUSTEXT(sn)

还有这样的,厉害啊。
? JUSTSTEM(sn)=12345
? JUSTEXT(sn)=67890
2016-01-12 09:11
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:5 
a=1234.567800
a=alltrim(padl(a,20," ")) &&VFP中数值型数据有效长度不会超过20位
? "整数位数:",len(JUSTSTEM(a))
? "小数位数:",len(JUSTEXT(a))

[此贴子已经被作者于2016-1-12 09:25编辑过]


坚守VFP最后的阵地
2016-01-12 09:22
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
回复 6楼 sdta
高!
用 PADL()要比使用 TRANSFORM()好,转换时不会丢失整数后面的小数位!
PADL()函数的第三个参数可以省略,省略时默认就是空格。可精简为 a = ltrim(padl(a,20))

[此贴子已经被作者于2016-1-12 09:32编辑过]


泉城飞狐
2016-01-12 09:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
回复 4楼 liuxingang28
可以用格式符
2016-01-12 09:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用sdta在2016-1-12 09:22:57的发言:

a=1234.567800
a=alltrim(padl(a,20," ")) &&VFP中数值型数据有效长度不会超过20位
? "整数位数:",len(JUSTSTEM(a))
? "小数位数:",len(JUSTEXT(a))

这个可以,应该可以省略alltrim()
a=0.000000
a=padl(a,20," ") &&VFP中数值型数据有效长度不会超过20位
? "整数位数:",len(JUSTSTEM(a))
? "小数位数:",len(JUSTEXT(a))[/quote]
2016-01-12 09:39
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 9楼 吹水佬
刚才试了一下,JUSTSTEM()有去除字符串前面空格的功能
b="  123"
?JUSTSTEM(b)
结果为:123 &&显示时前面没有空格
JUSTEXT()有去除字符串后面空格的功能
b="  1.23 "
?Len(JUSText(b))
结果为:2 &&小数位长度为2,说明小数位数不包括后面的空格

[此贴子已经被作者于2016-1-12 10:06编辑过]


坚守VFP最后的阵地
2016-01-12 10:01
快速回复:取数值型数据的长度?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038600 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved