ASP中的數字和字元比較

2022-10-10 16:00:16 字數 910 閱讀 9388

昨晚和老迷聊天聊到很晚,說到乙個把字串轉換為數字進行比較的問題。老迷說他喜歡保持字串本身的型別,進行字串的匹配比較,而不喜歡把字串強制轉換為數字進行比較。 一開始我不太明白這到底有什麼區別,比如

a = "1"

if a = 1 then

'something

end if

和a = "1"

if a = "1" then

'something

end if

在vb中,變數的資料型別預設是 variant,在必要的時候自動轉換,例如上例第一種,由於表示式右邊是數字,因此系統會自動將字串變數a轉換為數字型別,然後進行數字的比較。而第二種則沒有轉換型別這個過程。 這個從**上看沒有任何區別的比較過程,在執行時卻差著乙個步驟。這就是老迷關於他為什麼更願意保持字串變數的字串型別來進行比較的原因。

最簡單的運用就是使用者登入時,比如有個是否儲存 cookies 的選項。通常是用下拉選擇或者單選按鈕,表單資料經過asp程式讀取之後,request.form("cookies") 的值預設情況下是字串型別的。我們往往是把它當成數字來用,有時候我們還習慣用 a = cint(request.form("cookies")) 的方式在讀取時進行轉換,也或者不做轉換,直接用 if a = 1 來判斷。 實際上不管用哪種方法,都離不開乙個轉換的過程,而且為了避免 cint 函式出錯,我們往往還需要在前面增加乙個 isnumeric 的驗證,這樣一來,多出來的就不只是乙個步驟了。 而如果我們直接把 request.form("cookies") 作為字串考慮,我們只需要一行**即可:

if request.form("cookies") <> "" and a = "1" then

就同時完成了資料有效性驗證和比較。 這個很小的細節,在實際程式設計中用到的地方非常多,每個地方都多兩個步驟,那的確在效能上就是比較低大的浪費了

PHP中的數字與字串比較

php中的比較運算子有點詭異,很容易出錯,現列出比較規則 1 當兩個字元進行大小比較時,是比較著這兩個字元的ascii碼大小 這條很容易理解。2 當兩個字串進行大小比較時,是從第乙個字元開始,分別比教對應的ascii大小,只要從從某個對應位置開始,其中乙個字串的當前位置字元大於另乙個字串對應位置字元...

PHP中的數字與字串比較

當兩個字元進行大小比較時,是比較著這兩個字元的ascii碼大小 這條很容易理解。當兩個字串進行大小比較時,是從第乙個字元開始,分別比教對應的ascii大小,只要從從某個對應位置開始,其中乙個字串的當前位置字元大於另乙個字串對應位置字元,即直接判別出這兩個字串大小,如 ba az 那麼 10 與 a ...

linuxshell中數字的比較

整數之間的比較 示例指令碼 bin bash if 1 gt 2 then echo 引數 1大於引數 2 else echo 引數 1小於引數 2 fi數字判斷一些命令 gt是大於 lt是小於 eq是等於 ne是不等於 ge是大於等於 le是小於等於 小數及整數之前的比較 示例指令碼 a 1.6 ...