2016-09-09 4 views
0

Ich arbeite seit einiger Zeit an einem System, und der Client hat es getestet. Sie wollen, dass das System jetzt aufrundet und dabei zwei Dezimalstellen einhält. Kann jemand helfen, da ich Probleme mit Math.Ceiling habe und die Zahlen in Dezimal konvertieren. Mein Code ist unten.In Dezimal konvertieren und aufrunden mit 2 Dezimalstellen

Zeile 2 ist die Stelle, an der die Änderung vorgenommen werden muss, und die Zahl muss auf 2 Dezimalstellen aufgerundet werden.

float fcharge = Convert.ToSingle(dr["total_charge_weight"]) * Convert.ToSingle(dr["H_unit_rate"]); 
decimal dcharge = Math.Round(Convert.ToDecimal(fcharge), 2); 
float charge = Convert.ToSingle(dcharge); 
+0

Können Sie ein Beispiel mit Eingabe- und erwarteten Ausgabedaten angeben? – fubo

+0

Was ist falsch an deinem Code? – user3185569

+0

@fubo Eingabe wird 123,877 erwartete Ausgabe sein 123,90 –

Antwort

0

Würde das nicht tun?

public static float RoundUp(float number, int decimalPlaces) 
{ 
    var scale = Math.Pow(10, decimalPlaces); 
    return (float)(Math.Ceiling(number * scale)/scale); 
} 

Dinge zu beachten:

  1. Sie sind verpflichtet, bis Roud. Math.Round macht das nicht.
  2. Es ist nicht notwendig Convert zu verwenden, einfach zu werfen.
  3. Es ist nicht notwendig, zu decimal zu konvertieren, Sie werfen es weg, wenn Sie zurück zu float konvertieren; Verwenden Sie die implizite Konvertierung zu double und kehren Sie nur zu float zurück, wenn es eine Anforderung ist.
Verwandte Themen