VF:数据运算及程序设计

[复制链接]
查看11 | 回复2 | 2011-6-8 09:16:52 | 显示全部楼层 |阅读模式
书上的例题:
clear
?"例3-11"
x='林经07-1'
?val(x)
?val(subs(x,5))
x=255.67
?str(x)
?str(x,2)
?" "
set date to ymd
set century on
set strict to 1
?ctod("2005.05.16")
?ctod("05/05/16")
?date()
?'@@@'+dtoc(m)+'***'
书上显示出的结果:

0.00

7.00

256
255.7
**
2005.05.16
2005.05.16
2010.06.13
@@@2010.06.13***
我不理解的是:
?val(x)为什么出来的是0.00?这是怎么变出来的啊?
?val(subs(x,5)) 这个为什么出来的又是7.00?
?val(subs(x,5)) 这个又是什么意思?起到什么作用?
?'@@@'+dtoc(m)+'***'中的dtoc(m)是什么意思?dtoc()我知道是日期型转成字符型,括号里的m是什么意思?
谢谢了!
set strict to 1
是什么意思?起到什么作用?上面打错了

回复

使用道具 举报

千问 | 2011-6-8 09:16:52 | 显示全部楼层
val()函数是将字符型转换为数值型的函数,当字符串中出现非数字的字符时,则该字符后面所有字符直接忽略。如:val("12a34")=12.00val("a1234")=0.00val("1234")=1234.00这里:val(x)=val('林经07-1'),第1位就不是数字,所以后面直接忽略,结果为0.00val(subs(x,5)),首先subs(x,5)函数是取字串函数,将字符串从第5位开始取到末尾,所以subs(x,5)="07-1" (注意一个汉字占两位),val(subs(x,5))=val("07-1")=7.00(-不是数字)m不太清楚,应该是前面用了几个set语句,将日期的显示格式转换为年月日格式了。...
回复

使用道具 举报

千问 | 2011-6-8 09:16:52 | 显示全部楼层
x存的是非数字字符(以最为准), 因此 val(x) 显示 0, 至於显示 0.00 是因为默认把数字显示为两位小数的形式subs(x,5)指的是 x 从第5位开始的剩馀字符, 即 "07-1", 该字符串以有效的数字为准, 即 "07"val("07" )显示 7.00你的的代码中 , m 确实没有赋值, 请再检查你的书上前面有哪些代码...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行