Avatar billede w13 Novice
30. januar 2005 - 17:28 Der er 4 kommentarer og
1 løsning

Fjern komma og tal efter komma fra udregnet gennemsnit

Hey Eksperter...

Jeg har denne kode til at udregne og udskrive gennemsnittet af to felter fra databasen:
-----------------------------------------
<%
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/db.mdb")

strSQL = "SELECT * FROM [elements] where [id] = "& request.querystring("id") &""

Set rs = myConn.Execute(strSQL)

Session("rates") = rs("rates")

strSQL = "SELECT (rating/rates) AS gennemsnit FROM [elements] WHERE [id] = "& request.querystring("id") &""

Set rsrates = myConn.Execute(strSQL)

Response.Write rsrates("gennemsnit")

myConn.Close
Set Conn = Nothing
%>
-----------------------------------------
Men det meste af tiden er der en 6-9 kommaer efter hel-tallet... Hvordan kan jeg undgå, at den skriver kommaer efter?

Vh.
  W13
Avatar billede goose Nybegynder
30. januar 2005 - 18:08 #1
Prøv med:

Response.Write formatnumber(rsrates("gennemsnit"),0)

/Goose
Avatar billede lorentsnv Nybegynder
30. januar 2005 - 18:11 #2
Du kan bruge CInt for at få et integer tal, eller FormatNumber for at styre andtal decimaler. F.eks:

Response.Write CInt(rsrates("gennemsnit"))
Response.Write FormatNumber(rsrates("gennemsnit"),0)

Muligvis skal du formatere tallet tilbage til string, jeg tror det ikke, men hvis ovenstående ikke fungerer, skal du have:
Response.Write CStr(CInt(rsrates("gennemsnit")))
Response.Write CStr(FormatNumber(rsrates("gennemsnit"),0))
Avatar billede w13 Novice
30. januar 2005 - 18:22 #3
Jeg har fået Goose's til at virke og det var også det mest enkle, så hvis Goose lige opretter et svar, får han de 60 point... =)
Avatar billede goose Nybegynder
30. januar 2005 - 19:21 #4
Jamen så smider jeg da lige et svar :o)

/Goose
Avatar billede ldanielsen Nybegynder
31. januar 2005 - 12:51 #5
Hvis jeg lige må blande mig, så er FormatNumber faktisk for avanceret. Den er der for at kunne udskrive tal med et bestemt antal decimaler, og med tusindtalsseparator:

session.LCID = 1030
Response.Write (FormatNumber(12300, 3, True, False, True))

giver 12.300,000

Cint bruges til at konvertere andre udtrykstyper til integers.

Det korrekte ville være at bruge Fix eller Int:
Response.Write Fix(rsrates("gennemsnit"))


Men alle tre metoder giver det rigtige resultat, blot er det god praksis at bruge funktionerne til det de er lavet til. At bruge formatnumber hvis man ikke vil have formateret tallet, og at bruge Cint på et udtryk der allerede er et tal, det er lidt forkert.

Response.Write Fix(rsrates("gennemsnit"))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester