Avatar billede domaz.dk Novice
09. februar 2004 - 15:26 Der er 15 kommentarer og
1 løsning

rund op?

Er der ikk en komando der runder tallet op...

f.eks. 1,3 = 2; 1,7 = 2;

Den skal altså kun runde op, ikke bare til nærmeste runde tal.
Avatar billede viciodk Praktikant
09. februar 2004 - 15:33 #1
Avatar billede nmh Nybegynder
09. februar 2004 - 15:33 #2
Funktionen round kan anvendes.
Round(1.5) er 2
Avatar billede nmh Nybegynder
09. februar 2004 - 15:35 #3
ups, nu ser jeg, det er ceiling og ikke sædvanlig afrunding, du er ude efter, så viciodk var hurtigst med det rigtige svar. :o)
Avatar billede viciodk Praktikant
09. februar 2004 - 15:35 #4
Der er også noget om det her:
http://www.freevbcode.com/ShowCode.asp?ID=1558
Avatar billede viciodk Praktikant
09. februar 2004 - 15:35 #5
:)
Avatar billede domaz.dk Novice
09. februar 2004 - 16:03 #6
Text_xakse = 15
Text_yakse = 15

Det er hvad xakse og yakse er her kommer så koden hvor den skal runde op...

stepx = Text_xakse / 10
stepy = Text_yakse / 10
   
    For X1 = -(Text_xakse - 1) To (Text_xakse - 1) Step Ceiling(stepx)
        graf.CurrentX = X1 - 0.5
        graf.CurrentY = -1
        graf.Print X1
    Next X1
    For Y1 = -(Text_yakse - 1) To (Text_yakse - 1) Step Ceiling(stepy)
        graf.CurrentX = -1.5
        graf.CurrentY = Y1 + 0.75
        graf.Print Y1
    Next Y1

hvorfor virker det ikk?
Avatar billede martin_moth Mester
09. februar 2004 - 19:43 #7
Du kan jo bare skrive din egen afrundings-funktion:

Private Function afrund(Decimaltal As Double) As Long
  If Decimaltal - Int(Decimaltal) > 0 Then
    afrund = Int(Decimaltal) + 1
  Else
    afrund = Int(Decimaltal)
  End If
End Function

Den bruger du så bare fx. som

  Dim Tal as Long
  Tal = 2.03
  msgbox "Afrundet tal er: " & afrund(Tal)
Avatar billede johs_j Novice
15. februar 2004 - 23:17 #8
Round(1.1 + 0.9)
Da Round() afrunder 0,4 ned og 0,5 op, kan problemet løses ved at tillægge 0,9. Så vil den altid runde op.
Avatar billede johs_j Novice
15. februar 2004 - 23:18 #9
UPS
Round(1.1 + 0.5)

Der skal kun tillægges 0,5
Avatar billede martin_moth Mester
16. februar 2004 - 07:34 #10
josh_j: Øhh? Hvor kommer de 0,4 fra? Hvad skal der lægges 0,9 til? I øvrigt har jeg meget svært ved at se at din løsning regner rigtigt...

domaz.dk: Er det ikke lukketid?
Avatar billede johs_j Novice
16. februar 2004 - 10:40 #11
>martin_moth
Det beløb som rundes op skal tillægges 0,5 for at sikre at der altid rundes opad.
Round(1.3)=1 men Round(1.3 + 0.4)=2 ' Her får du 1.7 som rundes op til 2
Round(1.7)=2 men Round(1.7 + 0.4)=2 ' Her får du 2.1 som rundes ned til 2

Jeg har afprøvet det i VB6 med tal fra 1.0 til 1.9
Avatar billede martin_moth Mester
16. februar 2004 - 10:50 #12
Hvorfor lægger du så kun 0,4 til?
Avatar billede martin_moth Mester
16. februar 2004 - 10:54 #13
Men ellers giver jeg dig ret..



Mit forslag:

Private Function afrund(Decimaltal As Double) As Long
  If Decimaltal - Int(Decimaltal) > 0 Then
    afrund = Int(Decimaltal) + 1
  Else
    afrund = Int(Decimaltal)
  End If
End Function


Dit forslag:

Private Function afrund(Decimaltal As Double) As Long
  afrund = round(Decimaltal + 0.5, 0)
End Function

Og dit er jo mere simpelt :o)
Avatar billede johs_j Novice
16. februar 2004 - 12:30 #14
Private Function afrund(Decimaltal As Double) As Long
  afrund = round(Decimaltal + 0.4, 0)
End Function

Der må kun tillæges 0.4. Ellers bliver der en fejl hvis Decimaltal er = heltal.
Avatar billede martin_moth Mester
16. februar 2004 - 12:53 #15
Jamen, så duer din metode jo slet ikke!

Hvad hvis det er 1,99 der skal afrundes?
Eller 2,00000000000000000000000000001 ?

Dvs. du skal tjekke om det tal der skal afrundes et heltal, hvis det er droppes afrundeigen, og er det ikke et heltal lægges der 0,5 (IKKE 0,4) til!

Hvis du skal have din løsning til at virke hver gang skal du altså gøre følgende:

Private Function afrund(Decimaltal As Double) As Long
  If Decimaltal - Int(Decimaltal) > 0 Then
    afrund = round(Decimaltal + 0.5, 0)
  else
    afrund = Decimaltal
  end if
End Function

Så er vores løsninger pludselig næsten ens. Jeg holder mig til min løsning :o)

domaz.dk - har du fået svar nok?
Avatar billede domaz.dk Novice
11. marts 2004 - 10:33 #16
tak for svaret.... undskyld det tog lidt langtid før jeg godkendte dit svar...
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