Avatar billede dennism Nybegynder
24. februar 2004 - 21:40 Der er 11 kommentarer og
2 løsninger

VB: Afrund int

Hvilken funktion kan jeg bruge i VB, hvis jeg ønsker af afrunde et int?
Avatar billede nmh Nybegynder
24. februar 2004 - 21:52 #1
Du mener vel afrunde til et heltal?
Round(1.5) er 2
Round(1.4) er 1
Avatar billede nmh Nybegynder
24. februar 2004 - 21:55 #2
Det skulle have været et svar.
Avatar billede dennism Nybegynder
24. februar 2004 - 21:56 #3
Hvad nu hvis jeg f.eks. vil afrunde til 5 decimaler? kan jeg så f.eks. skrive Round(1.5,5)?

Hvad kan jeg iøvrigt gøre, hvis brugeren ikke indtaster tallet som 1,5 istedet for 1.5? Det vil jo ødelægge programmet.
Avatar billede nmh Nybegynder
24. februar 2004 - 21:59 #4
altså 1.234567
skal afrundes til 1.23457
Mon ikke round(10^5*x)/10^5 vil virke.
Avatar billede nmh Nybegynder
24. februar 2004 - 22:07 #5
Eller mente du, at 123456 skulle rundes op til 123460?
Avatar billede dennism Nybegynder
24. februar 2004 - 22:11 #6
Jeg mener, at hvis jeg har et tal, og jeg ønsker at afrunde det til f.eks. 5 decimaler, kan det så ik klares på en nem måde? I PHP kan man f.eks. afrunde 1,12346 til 2 decimaler på følgende måde:
round("1,12346","5")
Avatar billede nmh Nybegynder
24. februar 2004 - 22:20 #7
Jo du kan bruge format-funktionen kommer jeg nu i tanker om:
Format(123.23456, "######.####")
bliver til 123,2346
Avatar billede nmh Nybegynder
24. februar 2004 - 22:26 #8
Du kan læse mere om format-funktionen her:
http://www.apostate.com/programming/vb-format.html

Den kan klare mange ting: currency, date, number etc.
Avatar billede dennism Nybegynder
24. februar 2004 - 22:32 #9
På siden står der:
Format(8315.4, "#####.##") 8315.4

Der bliver da ik ændret fra . til ,
Avatar billede nmh Nybegynder
25. februar 2004 - 09:31 #10
Det gør det i min opsætning af Visual Basic.
Vil du gerne have ædret . til ,  ?
Avatar billede martin_moth Mester
25. februar 2004 - 09:53 #11
Hvad med at kikke i hjælpen:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vafctround.asp

Hvis du ikek vil bruge den indbyggede funktion, kan du lave din egen, se svar fra nmh kl. 21:59:16

Hvis du vil forhindre at der tastes "," kan du i textboxens keypress event ændre "," til "." Altså:

I _keypress-eventen for din textbox skriver du følgende:

  Select Case KeyAscii
    Case vbKeyReturn      'Enter-tasten
        KeyAscii = 0    'fjerner tegnet
        SendKeys "{tab}" 'simulerer et tryk på Tabulatortasten i stedet for
    Case vbKeyBack        'Backspace-tasten - den er tilladt
    Case 48 To 57        'tallene 0 - 9
    Case Asc(".")        'Punktum er tilladt
    Case Else            'alle øvrige tegn
        KeyAscii = 0    'fjerner tegnet (alle øvrige tegn)
  End Select

Hvis du vil lave det rigtig smart,tillader du også "," men ændrer tastetrykket til "." - det kan du se ud af ovenstående hvordan du gør :o)
Avatar billede dennism Nybegynder
25. februar 2004 - 20:16 #12
Jeg kan ikke helt få det til at virke.
Jeg har denne kode nu:
______________________________________________
Private Sub txta_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And Not (KeyAscii = 8 Or KeyAscii = 44) Then
  KeyAscii = 0
End If

End Sub
__________________________________________

Jeg vil gerne have kørt en funktion efter min IF-sætning, som erstatter et evt. "," i txt-feltet med ".". Hvordan skal den kode se ud?
Avatar billede nmh Nybegynder
25. februar 2004 - 20:28 #13
komma har ascii-nummer  44.
punktum ah ascii-nummer asc(".")=46
Private Sub txta_KeyPress(KeyAscii As Integer)
  If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 And KeyAsii<>44) Then  KeyAscii = 0
  if KeyAscii=44 then KeyAscii=46
End Sub
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