Runde Zahlen aufwärts statt abwärts | C #

9

Ich führe einige Berechnungen durch und füge das Ergebnis in eine Datenbank ein.

Mein Problem ist, dass die Antworten, die ich bekomme, eher abgerundet als aufgerundet sind. Dies scheint nicht wichtig zu sein, aber im Laufe vieler Verkäufe beginnen die Cents sich zu summieren!

%Vor%

Ich werde ehrlich sein, ich bin Müll mit Zahlen und die ganze Mathematik-Funktion war etwas, was ich im College vermeiden wollte. Kann mir jemand sagen, wie ich diese Zahlen sammeln kann, im Gegensatz zu down?

    
109221793 12.11.2010, 08:57
quelle

7 Antworten

10

Verwenden Sie die Methode Math.Ceiling() .

%Vor%     
Liviu M. 12.11.2010, 09:01
quelle
4

Dein Problem ist das

%Vor%

Da 100 ein int ist, wird eine ganzzahlige Division ausgeführt, so dass 150/100 zu 1 wird. Sie können dies beheben, indem Sie sicherstellen, dass 100 eine Dezimalzahl ist, da Sie eine Dezimalzahl als Ergebnis am Ende haben möchten. Ändern Sie Ihren Code in.

%Vor%

Wenn Sie jedoch immer Werte wie 1.1 bis 2 runden möchten, müssen Sie Math.Ceiling verwenden, um dies zu erreichen. Wenn Sie aus irgendeinem Grund die Math -Klasse vermeiden möchten (ich kann nicht sehen, warum Sie das tun wollen, können Sie 1 zum Ergebnis hinzufügen und es in ein int umwandeln, um effektiv auf die nächste Ganzzahl zu runden.

    
Øyvind Bråthen 12.11.2010 09:01
quelle
2

Suchen Sie vielleicht nach Math.Ceiling ?

    
soren.enemaerke 12.11.2010 09:02
quelle
2

.Nets Math.Round-Funktion verwendet etwas, das allgemein als Banker-Rundung bezeichnet wird, das durch Runden von .5 auf die nächste gerade ganze Zahl, dh 22,5 = 22 und 23,5 = 24, funktioniert. Dies ergibt eine gleichmäßigere Verteilung beim Runden.

Es ist auch erwähnenswert, dass der SQL Server keine Banker Rundung verwendet

    
Homde 12.11.2010 09:36
quelle
1

Oder Sie könnten einfach 0,49 zum Ergebnis addieren, bevor Sie abgerundet werden ... Wette Decke ist der richtige Weg zu gehen;)

    
veljkoz 12.11.2010 09:04
quelle
1

Runden Sie die Zahl bis zur nächsten ganzen Zahl auf, indem Sie die Ceiling-Methode von System.Math verwenden.

Zum Beispiel:

%Vor%

Wenn edpercentage also 5 ist und rrp 20.23 ist, wäre das gerundete Ergebnis 102 anstatt 101.15

Suchen Sie das?

    
ndtreviv 12.11.2010 09:11
quelle
1

Ihre eingehenden Prozentsätze addieren sich wahrscheinlich nicht zu 100%. Berechnen Sie einen Ihrer Brüche, indem Sie die Summe der anderen Brüche von der Summe subtrahieren.

%Vor%

Leider sum ist 99 und nicht 100.

Sie können v3 stattdessen wie folgt berechnen:

%Vor%

Oder verbessern Sie den Rundungsfehler in den eingehenden Prozentzahlen:

    
Martin Liversage 12.11.2010 09:10
quelle

Tags und Links