ASP.NET數(shù)據(jù)類型轉換淺析
ASP.NET數(shù)據(jù)類型轉換是如何實現(xiàn)的呢?讓我們首先來看看所涉及的函數(shù):
每個函數(shù)都可以強制將一個表達式轉換成某種特定數(shù)據(jù)類型。
ASP.NET數(shù)據(jù)類型轉換語法
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CStr(expression)
CVar(expression)
CStr(expression)
必要的 expression 參數(shù)可以是任何字符串表達式或數(shù)值表達式。
ASP.NET數(shù)據(jù)類型轉換返回類型
函數(shù)名稱決定返回類型,如下所示:
ASP.NET數(shù)據(jù)類型轉換函數(shù)返回類型 expression 參數(shù)范圍
CBool Boolean 任何有效的字符串或數(shù)值表達式。
CByte Byte 0 至 255。
CCur Currency -922,337,203,685,477.5808 至922,337,203,685,477.5807。
CDate Date 任何有效的日期表達式。
CDbl Double 負數(shù)從 -1.79769313486232E308 至 -4.94065645841247E-324;正數(shù)從 4.94065645841247E-324 至 1.79769313486232E308。
CDec Decimal 零變比數(shù)值,即無小數(shù)位數(shù)值,為+/-79,228,162,514,264,337,593,543,950,335。對于 28 位小數(shù)的數(shù)值,范圍則為 +/-7.9228162514264337593543950335;最小的可能非零值是 0.0000000000000000000000000001。
CInt Integer -32,768 至 32,767,小數(shù)部分四舍五入。
CLng Long -2,147,483,648 至 2,147,483,647,小數(shù)部分四舍五入。
CSng Single 負數(shù)為 -3.402823E38 至 -1.401298E-45;正數(shù)為 1.401298E-45 至 3.402823E38。
CStr String 依據(jù) expression 參數(shù)返回 Cstr。
CVar Variant 若為數(shù)值,則范圍與 Double 相同;若不為數(shù)值,則范圍與 String 相同。
ASP.NET數(shù)據(jù)類型轉換說明
如果傳遞給函數(shù)的 expression 超過轉換目標數(shù)據(jù)類型的范圍,將發(fā)生錯誤。通常,在編碼時可以使用數(shù)據(jù)類型轉換函數(shù),來體現(xiàn)某些操作的結果應該表示為特定的數(shù)據(jù)類型,而不是缺省的數(shù)據(jù)類型。例如,當單精度、雙精度或整數(shù)運算發(fā)生的情況下,使用 CCur 來強制執(zhí)行貨幣運算。
應該使用數(shù)據(jù)類型轉換函數(shù)來代替 Val,以使國際版的數(shù)據(jù)轉換可以從一種數(shù)據(jù)類型轉換為另一種。例如,當使用 Ccur 時,不同的小數(shù)點分隔符、千分位分隔符和各種貨幣選項,依據(jù)系統(tǒng)的國別設置都會被妥善識別。
當小數(shù)部分恰好為 0.5 時,Cint 和 CLng 函數(shù)會將它轉換為最接近的偶數(shù)值。例如,0.5 轉換為 0、1.5 轉換為 2。Cint 和 CLng 函數(shù)不同于 Fix 和 Int 函數(shù),F(xiàn)ix 和 Int 函數(shù)會將小數(shù)部分截斷而不是四舍五入。并且 Fix 和 Int 函數(shù)總是返回與傳入的數(shù)據(jù)類型相同的值。
使用 IsDate 函數(shù),可判斷 date 是否可以被轉換為日期或時間。Cdate 可用來識別日期文字和時間文字,以及落入可接受的日期范圍內的數(shù)值。當轉換一個數(shù)字成為日期時,是將整數(shù)部分轉換為日期,小數(shù)部分轉換為從午夜起算的時間。
CDate 依據(jù)系統(tǒng)上的國別設置來決定日期的格式。如果提供的格式為不可識別的日期設置,則不能正確判斷年、月、日的順序。另外,長日期格式,若包含有星期的字符串,也不能被識別。
CVDate 函數(shù)也提供對早期 Visual Basic 版本的兼容性。CVDate 函數(shù)的語法與 CDate 函數(shù)是完全相同的,不過,CVDate 是返回一個 Variant,它的子類型是 Date,而不是實際的 Date 類型。因為現(xiàn)在已有真正的 Date 類型,所以 CVDate 也不再需要了。轉換一個表達式成為 Date,再賦值給一個 Variant,也可以達到同樣的效果。也可以使用這種技巧將其他真正的數(shù)據(jù)類型轉換為對等的 Variant 子類型。
注意 CDec 函數(shù)不能返回獨立的數(shù)據(jù)類型,而總是返回一個 Variant,它的值已經被轉換為 Decimal 子類型。
cint() 是ASP中的函數(shù)
函數(shù)將一個表達式轉化為數(shù)字類型
ASP.NET數(shù)據(jù)類型轉換表達式 CInt(expression)
允許數(shù)據(jù)類型: 任何有效的字符均可
ASP.NET數(shù)據(jù)類型轉換實例:
- ﹤%
- f = "234"
- response.write cINT(f) + 2
- %﹥
返回結果: 236
轉化字符"234"為數(shù)字"234",如果字符串為空,則返回0值
經常見到cint和clng的溢出出錯,如果有檢測函數(shù)就不會出這個問題,下面這兩個函數(shù)是應朋友要求寫的,看一下吧
- '檢測字符串是否是整數(shù)
- function Is_Int(a_str)
- if not isnumeric(a_str) or len(str) ﹥ 5 then
- Is_Int = false
- exit function
- elseif len(str) ﹤ 5 then
- Is_Int = true
- exit function
- end if
- if cint(left(a_str , 4)) ﹥ 3276 then
- Is_Int = false
- exit function
- elseif cint(left(a_str , 4)) = 3276 and cint(right(a_str , 1)) ﹥ 7 then
- Is_Int = false
- exit function
- else
- Is_Int = true
- exit function
- end if
- end function
- '檢測是否是長整數(shù)
- function Is_Lng(a_str)
- if not isnumeric(a_str) or len(str) ﹥ 10 then
- Is_Lng = false
- exit function
- elseif len(str) ﹤ 10 then
- Is_Lng = true
- exit function
- end if
- if clng(left(a_str , 9)) ﹥ 214748367 then
- Is_Lng = false
- exit function
- elseif clng(left(a_str , 9)) = 214748367 and clng(right(a_str , 1)) ﹥ 7 then
- Is_Lng = false
- exit function
- else
- Is_Lng = true
- exit function
- end if
- end function
ASP.NET數(shù)據(jù)類型轉換的相關信息就向你介紹到這里,希望你對ASP.NET數(shù)據(jù)類型轉換有所了解。
【編輯推薦】