Avatar billede entracore Nybegynder
06. juli 2002 - 19:15 Der er 6 kommentarer og
2 løsninger

Talværdier bliver afrundet automatisk

Hej

Det er noget jeg er lidt usikker på omkring talværdier og datatyper i VB. Følgende kode dividere 340 med 60 og det giver 6. Men det burde give 5.6666 osv...


Private Sub Form_Load()

Dim tal1 As Long
Dim tal2 As Long

tal1 = 340
tal2 = tal1 / 60

msgbox tal2

End Sub

Hvad hulen gør jeg galt ????
Avatar billede blackout Nybegynder
06. juli 2002 - 19:23 #1
Nu ved jeg ikke om jeg husker helt rigtig, men hvad med at ændre long til integer ?
Avatar billede entracore Nybegynder
06. juli 2002 - 19:25 #2
blackout >> Det hjælper desværre ikke :-(
Avatar billede joern Nybegynder
06. juli 2002 - 19:45 #3
Hej entrecore.

jeg har lige prøvet din kode.  Det giver også 6 hos mig.
Så ændrede jeg dim til 'single' så kommer dine decimaler.

jeg ville lige kigge på long / single i hjælpen

m.v.h.  Jørn
Avatar billede driis Nybegynder
06. juli 2002 - 19:46 #4
Integer og Long datatyperne er til hele tal. Brug datatypen Double:

Private Sub Form_Load()

Dim tal1 As Double
Dim tal2 As Double

tal1 = 340
tal2 = tal1 / 60

msgbox tal2

End Sub
Avatar billede blackout Nybegynder
06. juli 2002 - 19:47 #5
Ja det var double som skal bruges...
Avatar billede driis Nybegynder
06. juli 2002 - 19:52 #6
Du bør selvfølgelig bruge Single, som joern skriver, med mindre du arbejder med tal så store at de ikke kan indeholdes i en Single variabel. Grunden til dette er, at du så holder dit programs hukommelsesforbrug nede. (En Single variabel fylder 4 bytes, en double 8 bytes.)

http://www.driis.mobilixnet.dk/datatyper.htm
Avatar billede entracore Nybegynder
06. juli 2002 - 19:55 #7
Tak for jeres hjælp Joem og Driis. Jeg deler pointene mellem jer :-)
Avatar billede joern Nybegynder
06. juli 2002 - 22:31 #8
Tak for point.

Single eller double spiller vist ingen trille med mindre det er et array på tusindvis af tal.  F.eks. bruger jeg selv integer til formål hvor boolean var tilstrækkelig.  Long har jeg aldrig haft behov for.  Long og Single fylder lige meget (4 bytes).
Men dengang ruder konge var knægt og vi skrev basic programmer til en maskine med 64 kB ram, da gjaldt det om at spare. 

Hvis man ikke bruger option explicit kan man anvende variable inden for en sub-rutine uden at erklære dem (i hvert fald i VB5), men i så fald bliver de af typen Variant, den fylder minimum 22 bytes.
God programmerings-skik er naturligvis at erklære den type variabel, der fylder mindst muligt, men er tilstrækkelig.

M.v.h.  Jørn
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