当前位置:编程学习 > Foxpro >>

在visual foxpro 中,将数值转换成字符串函数, 输入:n=-123.456 ?STR(n,9,2),STR(n,6,2),STR(n,3),STR(n

则输出的为-123.46,-123.5,***,-123,-123. 既然转换后字符串的长度由《数值表达式2》决定,保留的小数位数由《数值表达式3》决定 那么第二个结果应该为-123.46,为什么没有保留两位小数呢? 还有 在取子串函数中,输入:name="周解放" ?SUBSTR(name,1,2),LEFT(name,2)输出 的函数均为:周。LEFT函数是从《字符型表达式》左边的第一个字符开始截取子串,那么截取的到底是"周解"还是"解放"呢.SUBSTR函数起始位置和字符个数分别由《字符表达式1》和《字符表达式2》决定,那么输出的字符就应该有2个的呀?这是为什么呢?
答案:对于问题一,可以这么理解,字符串的长度是要优先满足的,其次才满足保留小数位数的要求。n=-123.456,如果保留2位小数,数值为 -123.46,长度为7(注意负号和小数点都算1位)。STR(n,6,2) 虽然要保留2位小数,但长度为6是更严格的要求,因此最后只保留1位小数。
对于问题二,原因是汉字的一个字需要占用两个字符。举例:
?LEN("周解放"),LEN("周") 的显示结果为6和2。原因是3个汉字和1个汉字分别占用6个和2个字符。
?SUBSTR(name,2,2) 的显示结果为 芙。原因是周的第2字符和解的第1字符相连接,刚好对应芙字的两个字符。

希望有帮助,不清楚请追问,有用请采纳 o(∩_∩)o
其他:1、小数点要占一个字符位置
2、汉字和其他字符不一样,一个汉字占2个字符位置 对于问题一,可以这么理解,字符串的长度是要优先满足的,其次才满足保留小数位数的要求。n=-123.456,如果保留2位小数,数值为 -123.46,长度为7(注意负号和小数点都算1位)。STR(n,6,2) 虽然要保留2位小数,但长度为6是更严格的要求,因此最后只保留1位小数。
对于问题二,原因是汉字的一个字需要占用两个字符。举例:
?LEN("周解放"),LEN("周") 的显示结果为6和2。原因是3个汉字和1个汉字分别占用6个和2个字符。
?SUBSTR(name,2,2) 的显示结果为 芙。原因是周的第2字符和解的第1字符相连接,刚好对应芙字的两个zifu 

上一个:14. 在 Visual FoxPro 系统中,下列命名中不能作为变量名的是 __________ 。
下一个:用Visual Foxpro 知识编程:求s=1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值,n由键盘输入。 求高人解答

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,