一个昵称为预言家晚报的朋友很喜欢玩SOSO问问,等级LV10,已经算比较高了。晚上挂QQ的时候,看到他的问问有更新,就点进去看了一下,问题是:
我写了如下一段VBS
复制代码 代码如下:
dim a,b,c
a=inputbox("a","please input")
b=inputbox("b","please input")
c=a+b
msgbox(c)

可是最后结果是11,我知道肯定是倒数第二行的“+”没有作为运算符,请问这段代码该咋么写才正确?
你肯定会不屑一顾,切,那么简单的程序,谁不会?那请你先别往下看,独立写出这个程序,看看到底对不对。注意我的标题是两数相加,而不是两整数相加。

满意答案有两个,一个是我朋友给的:
复制代码 代码如下:
dim a,b,c
a=inputbox("a","please input")
b=inputbox("b","please input")
c=CInt(a)+CInt(b)
msgbox(c)

另一个是昵称为“乱码”的人给出的:
复制代码 代码如下:
dim a,b,c
a=int(inputbox("a","please input"))
b=int(inputbox("b","please input"))
c=a+b
msgbox c

很显然,一个用了CInt函数,一个用了Int函数。

CInt Function
复制代码 代码如下:
When the fractional part of a value is exactly 0.5, the CInt function rounds to the closest even number. For example, 0.5 rounds to 0, 1.5 rounds to 2, and 3.5 rounds to 4.
CInt differs from the Fix and Int functions, which truncate, rather than round, the fractional part of a number.

CInt不同于Fix和Int函数删除数值的小数部分,而是采用四舍五入的方式。当小数部分正好等于0.5时,CInt总是将其四舍五入成最接近该数的偶数。例如,0.5四舍五入为0,以及1.5四舍五入为2,3.5四舍五入为4。

Int, Fix Functions
复制代码 代码如下:
Both Int and Fix remove the fractional part of number and return the resulting integer value.

The difference between Int and Fix is that if number is negative, Int returns the first negative integer less than or equal to number, whereas Fix returns the first negative integer greater than or equal to number. For example, Int converts -8.4 to -9, and Fix converts -8.4 to -8.

Int和Fix函数都删除number参数的小数部分并返回以整数表示的结果。Int和Fix函数的区别在于如果number参数为负数时,Int函数返回小于或等于number的第一个负整数,而Fix 函数返回大于或等于number参数的第一个负整数。例如,Int 将-8.4转换为-9,而Fix函数将-8.4转换为-8。

一个是四舍五入,一个是删除小数部分,哪个更高明?

其实两个都不怎么高明。虽然输入提问者给出的整数(两个1),两者都能输出正确的答案;但是如果输入的是小数,这两个程序显然都不会输出正确的答案。

下面给出一个我自认为比较“高明”的答案:
复制代码 代码如下:
Dim a,b,c
a = InputBox("a","please input")
b = InputBox("b","please input")
c = 0 + a + b
MsgBox c

没错,只是多加了一个0。VBS中+号和&号的区别我相信你已经知道,但是我还是简单的复制一下文档:

虽然也可以使用+运算符连接两个字符串,但是您仍应使用&运算符进行字符串的连接以避免混淆,提供易理解的代码。

这是因为在使用+运算符时,有可能无法确定是做加法还是做字符串连接。

表达式的基本子类型决定了+运算符所做的操作,如下表所示:

如果 则 两个表达式都是数值 相加 两个表达式都是字符串 连接 一个表达式是数值,另一个表达式是字符串 相加

InputBox函数的返回值是字符串子类型,如果直接用+号的话效果和&号是一样的,即连接字符串。但是如果在前面加个0,效果就不一样了,即上表中的第三种情况,变成加号应有的效果了。

当然,为了程序严谨,还应该使用IsNumeric函数判断输入的是否是数字,简单起见,我在这里就省略了。
原文:http://demon.tw/programming/vbs-add-two-number.html

标签:
VBS,两数相加

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
评论“VBS 两数相加取值问题分析”
暂无“VBS 两数相加取值问题分析”评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。