Seite 1 von 1

Rundungsfunktion ohne Bereichsüberlaufgefahr

Verfasst: 12.12.2005 15:58
von Karl
Hallo,

ich habe hier mal eine kleine Rundungsfunktion, die gerade bei größeren Zahlen ein Bereichsüberlauf verhindert:

Code: Alles auswählen

Procedure.f Runden (Zahl.f, Stellen.b)
  Protected vorkomma.l, nachkomma.l, Entscheider.b, ergebnis.f, teiler1.l, teiler2.l
  teiler1 = Pow(10, Stellen)
  teiler2 = Pow(10, Stellen + 1)
  vorkomma = Int(Zahl)
  nachkomma = Int((Zahl-vorkomma) * teiler1)
  Entscheider = Int((Zahl-vorkomma) * teiler2) - nachkomma * 10
  If Entscheider < 5
    ergebnis = vorkomma + (nachkomma/teiler1)
  Else
    ergebnis = vorkomma + ((nachkomma + 1)/teiler1)
  EndIf
  ProcedureReturn ergebnis
EndProcedure
Vielleicht kann es einer ja gebrauchen.

Gruß Karl