VBS 兩數(shù)相加取值問題分析
一個(gè)昵稱為預(yù)言家晚報(bào)的朋友很喜歡玩SOSO問問,等級(jí)LV10,已經(jīng)算比較高了。晚上掛QQ的時(shí)候,看到他的問問有更新,就點(diǎn)進(jìn)去看了一下,問題是:
我寫了如下一段VBS
dim a,b,c
a=inputbox("a","please input")
b=inputbox("b","please input")
c=a+b
msgbox(c)
可是最后結(jié)果是11,我知道肯定是倒數(shù)第二行的“+”沒有作為運(yùn)算符,請(qǐng)問這段代碼該咋么寫才正確?
你肯定會(huì)不屑一顧,切,那么簡(jiǎn)單的程序,誰(shuí)不會(huì)?那請(qǐng)你先別往下看,獨(dú)立寫出這個(gè)程序,看看到底對(duì)不對(duì)。注意我的標(biāo)題是兩數(shù)相加,而不是兩整數(shù)相加。
滿意答案有兩個(gè),一個(gè)是我朋友給的:
dim a,b,c
a=inputbox("a","please input")
b=inputbox("b","please input")
c=CInt(a)+CInt(b)
msgbox(c)
另一個(gè)是昵稱為“亂碼”的人給出的:
dim a,b,c
a=int(inputbox("a","please input"))
b=int(inputbox("b","please input"))
c=a+b
msgbox c
很顯然,一個(gè)用了CInt函數(shù),一個(gè)用了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時(shí),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ù)為負(fù)數(shù)時(shí),Int函數(shù)返回小于或等于number的第一個(gè)負(fù)整數(shù),而Fix 函數(shù)返回大于或等于number參數(shù)的第一個(gè)負(fù)整數(shù)。例如,Int 將-8.4轉(zhuǎn)換為-9,而Fix函數(shù)將-8.4轉(zhuǎn)換為-8。
一個(gè)是四舍五入,一個(gè)是刪除小數(shù)部分,哪個(gè)更高明?
其實(shí)兩個(gè)都不怎么高明。雖然輸入提問者給出的整數(shù)(兩個(gè)1),兩者都能輸出正確的答案;但是如果輸入的是小數(shù),這兩個(gè)程序顯然都不會(huì)輸出正確的答案。
下面給出一個(gè)我自認(rèn)為比較“高明”的答案:
Dim a,b,c
a = InputBox("a","please input")
b = InputBox("b","please input")
c = 0 + a + b
MsgBox c
沒錯(cuò),只是多加了一個(gè)0。VBS中+號(hào)和&號(hào)的區(qū)別我相信你已經(jīng)知道,但是我還是簡(jiǎn)單的復(fù)制一下文檔:
雖然也可以使用+運(yùn)算符連接兩個(gè)字符串,但是您仍應(yīng)使用&運(yùn)算符進(jìn)行字符串的連接以避免混淆,提供易理解的代碼。
這是因?yàn)樵谑褂?B>+運(yùn)算符時(shí),有可能無(wú)法確定是做加法還是做字符串連接。
表達(dá)式的基本子類型決定了+運(yùn)算符所做的操作,如下表所示:
如果 | 則 |
兩個(gè)表達(dá)式都是數(shù)值 | 相加 |
兩個(gè)表達(dá)式都是字符串 | 連接 |
一個(gè)表達(dá)式是數(shù)值,另一個(gè)表達(dá)式是字符串 | 相加 |
InputBox函數(shù)的返回值是字符串子類型,如果直接用+號(hào)的話效果和&號(hào)是一樣的,即連接字符串。但是如果在前面加個(gè)0,效果就不一樣了,即上表中的第三種情況,變成加號(hào)應(yīng)有的效果了。
當(dāng)然,為了程序嚴(yán)謹(jǐn),還應(yīng)該使用IsNumeric函數(shù)判斷輸入的是否是數(shù)字,簡(jiǎn)單起見,我在這里就省略了。
原文:http://demon.tw/programming/vbs-add-two-number.html
上一篇:提權(quán)vbs代碼
欄 目:vb
下一篇:用VBS控制鼠標(biāo)的實(shí)現(xiàn)代碼(獲取鼠標(biāo)坐標(biāo)、鼠標(biāo)移動(dòng)、鼠標(biāo)單擊、鼠標(biāo)雙擊、鼠標(biāo)右擊)
本文標(biāo)題:VBS 兩數(shù)相加取值問題分析
本文地址:http://mengdiqiu.com.cn/a1/vb/7417.html
您可能感興趣的文章
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10VBS中的正則表達(dá)式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語(yǔ)句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁(yè)面中添加VBscript代碼


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
隨機(jī)閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 04-02jquery與jsp,用jquery