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)
>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
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
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)
tak for svaret.... undskyld det tog lidt langtid før jeg godkendte dit svar...
Synes godt om
Ny brugerNybegynder
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.