21. januar 2002 - 08:12Der er
11 kommentarer og 1 løsning
Afrunding
Er der en eller anden der har kendskab til et modul der kan bruges til afrunding af tal / beløb ? Jeg er ved at lave et lønsystem og der er jo nogle tal, som skal afrundes på bestemte måder. f.eks. altid ned og andre gange til nærmeste 10\'er
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Ellers er principptet typisk at man kan bruge denne formel til at afrunde. Her afrundes til nærmeste 10\'er, men dette tal kan bare udskiftes: iif(Tal mod 10=0, Tal, int(Tal/10+1)*10)
Ja den var lidt kringlet Terry :-) Nogle beløb rundes ned til nærmeste hele mens andre rundes ned til nærmeste 10\'er F.eks. rundes AMBI bidrag ned til nærmeste hele mens trækgrundlaget rundes ned til nærmeste 10\'er.
Hvad så med denne: Public Function Afrund(Tal As Single, Nærmeste As Long, Optional RundOp As Boolean = True) Afrund = IIf(Tal Mod Nærmeste = 0, Tal, Int(Tal / Nærmeste + IIf(RundOp = True, 1, 0)) * Nærmeste) End Function
Eks: Afrund(43,10,false) angiver at 43 skal afundes til nærmeste 10\'er og der skal rundes ned (RundOp=False)
Nu runder den fint op eller ned til nærneste 10, MEN jeg vil jo gerne have mulighed for at runde til nærmeste hele også og det kan den ikke så vidt jeg kan teste mig frem til. 1286,86 skal blive til 1286,00 f.eks.
hmm, det har du da ret i!? Nærmeste skal selvfølgelig sættes lig 1.
Det skulle være fixet her:
Public Function Afrund(Tal As Single, Nærmeste As Long, Optional RundOp As Boolean = True) If Nærmeste = 1 Then Afrund = Int(Tal + IIf(RundOp = True, 1, 0)) Else Afrund = IIf(Tal Mod Nærmeste = 0, Tal, Int(Tal / Nærmeste + IIf(RundOp = True, 1, 0)) * Nærmeste) End If End Function
Og hvis den skal være lidt kortere og lidt mere brugervenlig:
Public Function Afrund(Tal As Single, Optional Nærmeste As Long = 1, Optional RundOp As Boolean = True) If Nærmeste = 1 Then Afrund = Int(Tal + IIf(RundOp = True, 1, 0)) Else Afrund = Int(Tal / Nærmeste + IIf(RundOp = True, 1, 0)) * Nærmeste End If End Function
Derved kan den bruges i en kort version således: Afrund(3423.645) Eller Afrund(324.54, ,false)
Thomas - jeg har fundet en lille detalje ! Hvis man sender et 'helt' tal til funktionen f.eks. 11, og vil afrunde til nærmeste hele, så får man 12 tilbage. Jeg opdagede 'fejlen' her i weekenden da jeg var ved at køre test på mit lønsystem og fik nogle uforståelige tal.
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.