Okay, det var jeg ikke klar over, men jeg har nu testet det, og du har helt
ret. Det var dog en djævelsk egenskab!!! Hvad har de tænkt på???? Vi er jo
ikke alle statistikere. Som mindstemål burde funktionen have en parameter,
hvor man kunne vælge mellem General og Bankers afrunding.
I dette tilfælde har det dog begrænset effekt, fordi tallet bliver ganget
med 4 inden afrundingen. For at der skulle kunne opstå problemer, skulle det
tal der skal afrundes altså indeholde 125 efter decimalpunktet, f.eks.
2,125. Det er usandsynligt, men selvfølgelig ikke umuligt, så du har nok ret
i, at en bedre afrundingsmetode er nødvendig.
Vil din lille rutine også virke rigtigt ved negative tal?
Ved f.eks. en værdi på -2,5 vil rutinen afrunde til -2. Skulle det ikke have
været afrundet til -3? Iflg.
http://en.wikipedia.org/wiki/Rounding skal den
i hvert fald...
Jeg ville nok bruge denne rutine, som forhåbentlig er præcis:
Public Function AfrundTilHeltal(dblTal As Double) As Long
AfrundTilHeltal = Fix(dblTal)
If dblTal >= 0 Then
If dblTal >= AfrundTilHeltal + 0.5 Then AfrundTilHeltal =
AfrundTilHeltal + 1
Else
If dblTal <= AfrundTilHeltal - 0.5 Then AfrundTilHeltal =
AfrundTilHeltal - 1
End If
End Function
Eller også kunne man ændre den til:
Public Function AfrundTilHeltal(dblTal As Double) As Long
AfrundTilHeltal = Int(Abs(dblTal) + 0.5)
If dblTal < 0 Then AfrundTilHeltal = -AfrundTilHeltal
End Function
Stadig gælder dog, at en afrunding til nærmeste 25 øre (også for
krediteringer) kan ske med:
AfrundetBeløb = AfrundTilHeltal( Beløb * 4 ) / 4
--------------------------------------------------------------------------------
Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
Den har indtil videre sparet mig for at få 1560 spam-mails
Betalende brugere får ikke denne besked i deres e-mails.
Hent en gratis SPAMfighter her.