ASP頁(yè)面提示CInt溢出是什么錯(cuò)誤?
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
![]()
![]() 錯(cuò)誤原因: VBS里,超出Integer類(lèi)型的取值范圍,該類(lèi)型的取值范圍為-32,768 到 32,767 之間的整數(shù)。 cint范圍 -32,768 到 32,767。 (5位整數(shù)) clng范圍 -2,147,483,648 到 2,147,483,647。 CCur范圍 -922,337,203,685,477.5808 到 922,337,203,685,477.5807(15位數(shù)) 出錯(cuò)的根源: 在ASP里,有時(shí)候?yàn)榱朔轮棺⑷?,所以在接收參?shù)的時(shí)候直接使用Cint函數(shù)把接過(guò)來(lái)的參數(shù)轉(zhuǎn)換為Integer(數(shù)字)類(lèi)型,這就存在一個(gè)潛在問(wèn)題,當(dāng)頁(yè)面接收的某個(gè)參數(shù)(Request("xxx"))超過(guò)取值范圍時(shí)(可簡(jiǎn)單理解為5位數(shù)字),就會(huì)發(fā)生此錯(cuò)誤。這個(gè)是只有初級(jí)程序員會(huì)范的錯(cuò)誤。 解決辦法: 有兩個(gè)方案: 一,快速解決方案,打開(kāi)出錯(cuò)的頁(yè)面,把所有的Cint函數(shù)換為CCur函數(shù)(用個(gè)字符替換軟件,把Cint換為CCur)。轉(zhuǎn)換后,取值范圍將從-32,768 到 32,767 (5位整數(shù))提升到-922,337,203,685,477.5808 到922,337,203,685,477.5807(15位數(shù)),但此法也有潛在問(wèn)題,如果接收數(shù)值超過(guò)15位,那也會(huì)溢出,不過(guò)如果只是處理ID字段(如果數(shù)據(jù)庫(kù)里有,而且出錯(cuò)的是這個(gè)),那么可以放心,數(shù)據(jù)要達(dá)到15位數(shù)還是需要很長(zhǎng)時(shí)間的。 二,完美解決方案,不要再使用Cint、CCur、Clng一類(lèi)的轉(zhuǎn)換函數(shù),而應(yīng)該使用IsNumeric 函數(shù)來(lái)進(jìn)行判斷,此法需要有一定的編程能力時(shí)行函數(shù)修改。 該文章在 2024/12/28 11:40:42 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |