webForumDet fria alternativet

Ooooh god why, whhyyyyy 4,5+8=4,58? ;)

ASP

4 svar · 530 visningar · startad av Bosse168

Medlem sedan nov. 20031 018 inlägg
Frågan#1

Total brainfreeze igen...

hämtar ut 2 värden ur en MySQL db som är av typen VarChar och försöker enkelt och smäck plusa ihop dessa.

strTotaltTimmar=Rs3(0)+Rs3(1)

Rs3(0) = värdet 4,5
Rs3(1) = värdet 8

Varför vid Odins skägg blir värdet på strTotaltTimmar = 4,58

Medlem sedan juni 20019 519 inlägg
#2

En sträng är inte ett tal

"4,5" + "8" bli "4,58"
4,5+8 bli 12,5

konvertera dina strängar till ett tal läs om Convert to Double: http://msdn.microsoft.com/en-us/library/ftekwwt0(VS.85).aspx

Medlem sedan sep. 2006867 inlägg
#3

Nu är det förvisso en smiley med i frågan, men jag svarar ändå:

När man hanterar strängar (VarChar betyder att du har valt att representera kolumnens värde som strängar) så gäller att plustecknet "+" fungerar som sträng-konkatenerare (svenska, någon?) Dvs du kan på detta sätt enkelt slå ihop strängar. På samma sätt blir alltså "sol" + "katt" = "solkatt". Plustecknet har alltså olika funktion beroende på vad för typ du vill plussa ihop. Kallas också "Overloaded function".

Om du av olika skäl vill ha kvar VarChar-formatet i kolumnen så får du själv omvandla din Rs3-kolumn till tal, det gör du enkelt med följande rader:

If Trim(myVar) <> vbNullString And IsNumeric (myVar) Then
    myVarSng = CSng(myVar)
End If
Medlem sedan nov. 20031 018 inlägg
#4

*doh* min klassiska stupitity slår till igen ;)

Tack

Medlem sedan juni 20019 519 inlägg
#5

Bäst hade ju varit att köra rätt datatyps fält på ditt innehåll. Att köra en varchar på något som verkar alltid innehålla något som inte är av den datatypen känns bara omständigt.

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)