[C#] Fließkommazahlen richtig runden

// NewSchool, mit .NET-Funktion
double x = Math.Round(1.56789, 2);

// Oldschool1
double y = RoundToQuick(-12345.6789, 3);
private double RoundToQuick(double z, int digits)
{
    double p10 = Math.Pow(10.0, (double)digits);
    return z >= 0.0 ? (int)(z * p10 + 0.5) / p10 : (int)(z * p10 - 0.5) / p10;
}

// Oldschool2
double z = RoundToFull(-12345.6789, 3);
private double RoundToFull(double z, int digits)
{
    double p10 = Math.Pow(10.0, (double)digits);
    return z >= 0.0 ? Math.Floor(z * p10 + 0.5) / p10 : Math.Ceiling(z * p10 - 0.5) / p10;
}