51Testing软件测试论坛

标题: 请问怎么让两个百分比的值相加? [打印本页]

作者: Horus_Ra    时间: 2006-2-24 17:50
标题: 请问怎么让两个百分比的值相加?
比如:10% + 50%

提示类型错误……怎么办啊?

先谢了~
作者: yangkinki    时间: 2006-2-25 10:44
%符号改成/100,即10/100+50/100
作者: Horus_Ra    时间: 2006-2-27 09:25
问题是,这个值是我从界面上取出来的,取出来就带百分号……怎么替换啊?
作者: Hunter    时间: 2006-2-27 13:36
a =  "1%"
a=replace (a,"%","")
a = asc(a)
a= a-48

b = "2%"
b = replace(b,"%","")
b = asc(b)
b= b-48

c = (a+b)/100

c = formatpercent(c)

msgbox c

看看可以吗,如果有问题请回复!
作者: Horus_Ra    时间: 2006-2-27 13:42
成功了,多谢多谢!!
我编程能力不行啊~~~



另外,我缩减了一下,结果一样:

a = "1%"
a = replace (a,"%","")
b = "2%"
b = replace (b,"%","")

c = (Cint(a)+Cint(b))/100
c = formatpercent(c)
msgbox c

[ 本帖最后由 Horus_Ra 于 2006-2-27 13:47 编辑 ]
作者: Hunter    时间: 2006-2-27 13:56
嗯,精简了不少。
作者: 我要做SQAD    时间: 2006-2-27 13:59
把%去掉.

如果value1和value2都是2位,且都把值传入datatable中:
Cstr(CInt(left(datatable("value1",1),2))+Cint(left(datatable("value2",1),2)))+"%"
如果位数不定就再修改修改吧。
(初学VBScript,可能还有好的办法吧.)
作者: Horus_Ra    时间: 2006-2-27 14:34
本来我也像楼上这么想,可是要超过2位就不行了……
作者: 我要做SQAD    时间: 2006-2-27 14:50
Dim i,iPos1,iPos2
iPos1=InStrRev(datatable("value1",1),"%",-1,1)-1
iPos2=InStrRev(datatable("value2",1),"%",-1,1)-1
i=Cstr(CInt(left(datatable("value1",1),iPos1))+Cint(left(datatable("value2",1),iPos2)))+"%"
这样就不用担心位数了.
作者: Horus_Ra    时间: 2006-2-27 14:55
嗯,这样可行~~

不过还是Replace简洁~~
作者: hbwind    时间: 2006-2-27 18:13
但是replace在大范围字符串搜索的时候效率是不高的,不过在这个例子里面可能区别不大。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2