28.10.2001: Vielen Dank an Christian Marquardt für die Erweiterung des Snippets
für negative Zahlen !
//---------------------------------------------------------------------------
// Funktion RoundDouble rundet die übergebene Fließkommazahl auf die
// im Parameter iPrecision angegebene Anzahl der Dezimalstellen
//---------------------------------------------------------------------------
// Beispielaufrufe:
// RoundDouble(123.165, 2) liefert 123.17
// RoundDouble(0.0025, 3) liefert 0.003
// RoundDouble(123,34, 1) liefert 123.3
//
// Hinweise:
//
// - Parameter iPrecision kann auch negativ sein. In diesem Fall
// gilt z.B.: RoundDouble(12345.3,-2)=12300 und RoundDouble(12355.3,-2)=12400
// - beachten Sie die min./max. Grenzwerte für den Datentyp double,
// wenn Sie mit sehr großen Zahlen oder mit sehr hoher Genauigkeit
// arbeiten
//---------------------------------------------------------------------------
#include <math.h> // für Power()
#include <math.hpp> // für floorl()
double RoundDouble(double dValue, int iPrecision)
{
double dlPower10 = Power(10.0, iPrecision);
return dValue >= 0 ? floorl(dValue * dlPower10 + 0.5) / dlPower10 :
ceill(dValue * dlPower10 - 0.5) / dlPower10;
}
|