| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9188 人关注过本帖
标题:关于VFP中str()函数的使用
只看楼主 加入收藏
ljs527211
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-4-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
关于VFP中str()函数的使用
?str(1234567.123456,5)
?str(1234567.123456,6)
?str(1234567.123456,7)
?str(1234567.123456,4)
显示结果是:
*****
 1.E+6
1234567
****
搜索更多相关主题的帖子: 函数 
2013-04-09 11:02
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:2 
用三参数试下,第2参总长度,第3参小数位
?str(1234567.123456,14,6)

[ 本帖最后由 kiff 于 2013-4-9 11:09 编辑 ]
2013-04-09 11:07
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:2 
你参数二中设置的总长度都没有达到你整数部分的长度,你叫VFP怎么转换?另外,如楼上所说,想要保留小数位,请指定参数三。
2013-04-09 11:23
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:2 
参考4楼 https://bbs.bccn.net/thread-341386-1-1.html
STR(<数值表达式>[,<总长度>[,<其中小数位数>]])函数作用是将数值表达式转换为指定长度和小数位数的字符串,其中总长度的默认值是10,小数位数的默认值为0

并且在实际操作中,总长度要大于或等于数值表达式的整数部分的长度,才能完成命令。

1.如果总长度大于数值表达式长度 或 大于 数值表达式整数部分和指定小数部分的长度总和,若此时数值的小数位少于指定的小数位数,那么要将它补齐,添加“0”到最低位即最右边;如果数值的小数位等于指定的小数位数,那么多余的字节应该放到最高位即最左边,为空格。

2.如果总长度小于数值表达式长度,特别注意在转换取值的时候,是从左往右算起的,而且遵循四舍五入的原则,也就是说,假如指定的小数位数比从左往右取完整数后剩下的位数要多,实际保留的小数只能占总长度减去整数部分后的长度,如果超出了就四舍五入到剩下的位数。
其中小数点算一位。
如果最后一位数是小数点“.”的话,那么应该舍去小数点,把多出的那一个字节放在最高位(即最左边),即此时最高位为空格
因此二楼所说:
“? STR (1234.5678,5,2)  屏幕显示:1235
&&显示5位数是"1234.",其中没有小数,所以屏显1235,字符串是"1235 ",5后面有一个空格."应该是不对的,空格应该在‘1’前面
你可以做:
? STR (1234.5678,5,2)
? STR (1234.5678,9,4)
将它们的位数对比一下~可以很容易看出来~

此外:
? STR (1234.5678,7,1)   &&总长度为7,要1位小数
屏幕显示:
1234.6   &&从左往右到"1234."已经是5位,而总长度是7,发现能够取到一位小数,因此四舍五入到一位小数“1234.6”,此时只占了6个字节,多余的那一位字节同样放到最高位,即“1”前有一个空格

? STR (1234.5678,10,4)
屏幕显示:
1234.5678   &&同理,“1”前面有一个空格


2013-04-09 11:25
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:2 
平时多看帮助文件,懂得函数的基本用法。

坚持学习vfp,QQ:306805680
2013-04-09 11:27
cxzbzgz
Rank: 8Rank: 8
来 自:云南楚雄
等 级:贵宾
威 望:24
帖 子:296
专家分:808
注 册:2012-6-15
收藏
得分:2 
STR(nExpression [, nLength [, nDecimalPlaces]])
参数
nExpression
指定 STR( ) 要计算的数值表达式。
nLength
  指定 STR( ) 返回的字符串长度。如果省略 nLength,则 nLength 默认为 10 个字符。 注意:
如果表达式包含小数点, 该长度包括小数点所占的字符和小数点右边每个数字所占的字符。
nDecimalPlaces
  指定由 STR( ) 返回的字符串中的小数位数。若要用 nDecimalPlaces 指定小数位数,必须同时包含 nLength。如果 nDecimalPlaces 省略,则默认的小数位为零 (0)。
注意:
  Visual FoxPro 在数值计算中包含 16 位精度的限制。关于 Visual FoxPro 的数值精度的更多信息。 

学习交流VFP,QQ:248561326。
2013-04-09 11:32
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:2 
将STR()换为TRANSFORM()试试
2013-04-10 09:45
llgj2007
Rank: 1
等 级:新手上路
帖 子:14
专家分:6
注 册:2013-4-9
收藏
得分:2 
并且在实际操作中,<总长度>要大于或等于数值表达式的整数部分的长度,才能完成命令。
2013-04-11 18:15
快速回复:关于VFP中str()函数的使用
数据加载中...
 
   



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

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