webForumDet fria alternativet

2.1 blir 21 med cint()

ASP

5 svar · 225 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Jag skickar vidare en besökare med:

response.redirect "reg.asp?p=2.1"

Sedan vill jag köra en kontroll om p är mindre än 5.

response.write (cint(request.querystring("p")) > 5)

Genererar True.

response.write cint(request.querystring("p"))

Genererar 21.

response.write request.querystring("p")

Genererar 2.1.

Varför försvinner punkten när jag kör funktionen cint()?

Om jag istället struntar i att använda cint()-funktionen och kontrollerar så här:

response.write (request.querystring("p") > 5)

Genererar det True ändå.

Varför?

Medlem sedan jan. 20032 285 inlägg
#2

Testa att använda CSng() istället för CInt(). :)

Medlem sedan feb. 20011 498 inlägg
#3
response.write csng(request.querystring("p"))

Genererar 21.

Medlem sedan jan. 20032 285 inlägg
#4

Hm... Testa det här då:

strTal = Replace(Request.QueryString("p"), ".", ",")
sngTal = CSng(strTal)
Response.Write(sngTal > 5 & " : " & sngTal)
Medlem sedan feb. 20011 498 inlägg
#5

Nu fungerar det :)

Men man skulle gärna vilja veta varför punkten försvinner...

Medlem sedan jan. 20032 285 inlägg
#6

Det verkar som om din server tolkar "," som decimalavgränsare istället för ".", och om man använder CInt() på 2.1 verkar servern tolka det som om den ska ta bort punkten för att få det till en integer istället för att avrunda, som det gör om man har punkt inställd som decimaltecken.

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)