VBS 兩數(shù)相加取值問題分析
我寫了如下一段VBS
dim a,b,c
a=inputbox("a","please input")
b=inputbox("b","please input")
c=a+b
msgbox(c)
可是最后結(jié)果是11,我知道肯定是倒數(shù)第二行的“+”沒有作為運算符,請問這段代碼該咋么寫才正確?
你肯定會不屑一顧,切,那么簡單的程序,誰不會?那請你先別往下看,獨立寫出這個程序,看看到底對不對。注意我的標(biāo)題是兩數(shù)相加,而不是兩整數(shù)相加。
滿意答案有兩個,一個是我朋友給的:
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函數(shù),一個用了Int函數(shù)。
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函數(shù)刪除數(shù)值的小數(shù)部分,而是采用四舍五入的方式。當(dāng)小數(shù)部分正好等于0.5時,CInt總是將其四舍五入成最接近該數(shù)的偶數(shù)。例如,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函數(shù)都刪除number參數(shù)的小數(shù)部分并返回以整數(shù)表示的結(jié)果。Int和Fix函數(shù)的區(qū)別在于如果number參數(shù)為負數(shù)時,Int函數(shù)返回小于或等于number的第一個負整數(shù),而Fix 函數(shù)返回大于或等于number參數(shù)的第一個負整數(shù)。例如,Int 將-8.4轉(zhuǎn)換為-9,而Fix函數(shù)將-8.4轉(zhuǎn)換為-8。
一個是四舍五入,一個是刪除小數(shù)部分,哪個更高明?
其實兩個都不怎么高明。雖然輸入提問者給出的整數(shù)(兩個1),兩者都能輸出正確的答案;但是如果輸入的是小數(shù),這兩個程序顯然都不會輸出正確的答案。
下面給出一個我自認為比較“高明”的答案:
Dim a,b,c
a = InputBox("a","please input")
b = InputBox("b","please input")
c = 0 + a + b
MsgBox c
沒錯,只是多加了一個0。VBS中+號和&號的區(qū)別我相信你已經(jīng)知道,但是我還是簡單的復(fù)制一下文檔:
雖然也可以使用+運算符連接兩個字符串,但是您仍應(yīng)使用&運算符進行字符串的連接以避免混淆,提供易理解的代碼。
這是因為在使用+運算符時,有可能無法確定是做加法還是做字符串連接。
表達式的基本子類型決定了+運算符所做的操作,如下表所示:
如果 | 則 |
兩個表達式都是數(shù)值 | 相加 |
兩個表達式都是字符串 | 連接 |
一個表達式是數(shù)值,另一個表達式是字符串 | 相加 |
InputBox函數(shù)的返回值是字符串子類型,如果直接用+號的話效果和&號是一樣的,即連接字符串。但是如果在前面加個0,效果就不一樣了,即上表中的第三種情況,變成加號應(yīng)有的效果了。
當(dāng)然,為了程序嚴(yán)謹,還應(yīng)該使用IsNumeric函數(shù)判斷輸入的是否是數(shù)字,簡單起見,我在這里就省略了。
原文:http://demon.tw/programming/vbs-add-two-number.html
相關(guān)文章
VBS基礎(chǔ)篇 - vbscript Dictionary對象
Dictionary是存儲數(shù)據(jù)鍵和項目對的對象,其主要屬性有Count、Item、Key,主要方法有Add、Exists、Items、Keys、Remove、RemoveAll2018-05-05VBS基礎(chǔ)篇 vbscript Sendkeys模擬鍵盤操作
在vbscript中我們可以object.SendKeys模擬鍵盤操作,將一個或多個按鍵指令發(fā)送到指定Windows窗口來控制應(yīng)用程序運行,,需要的朋友可以參考下2018-06-06vbs 批量修改文件,bat 批處理文件調(diào)用執(zhí)行vbs,并在cmd窗口打印返回值(vbs運行結(jié)果)
使用vbs 腳本對工作目錄下的字符串進行替換并統(tǒng)計被修改的文件數(shù)主調(diào)的批處理方法將捕捉該vbs腳本運行后的結(jié)果并打印在cmd窗口。2011-09-09利用WSH里的MapNetworkDrive方法腳本蠕蟲的傳播方式
利用WSH里的MapNetworkDrive方法腳本蠕蟲的傳播方式...2007-02-02