2013-09-30 3 views
8

Ich möchte meine Antwort 1 Dezimalstelle runden. zum Beispiel: 6.7, 7.3, usw. Aber wenn ich Math.round verwende, kommt die Antwort immer ohne Dezimalstellen. Zum Beispiel: 6, 7Runde auf 1 Dezimalstelle in C#

Hier ist der Code, den ich verwendet:

int [] nbOfNumber = new int[ratingListBox.Items.Count]; 
int sumInt = 0; 
double averagesDoubles; 

for (int g = 0; g < nbOfNumber.Length; g++) 
{ 
    nbOfNumber[g] = int.Parse(ratingListBox.Items[g].Text); 
} 

for (int h = 0; h < nbOfNumber.Length; h++) 
{ 
    sumInt += nbOfNumber[h]; 
} 

averagesDoubles = (sumInt/ratingListBox.Items.Count); 
averagesDoubles = Math.Round(averagesDoubles, 2); 
averageRatingTextBox.Text = averagesDoubles.ToString(); 
+0

Ihre Variablen nicht –

+0

bearbeitet definiert ... Dank –

+0

http://stackoverflow.com/questions/257005/how-do-you-round-a-number-to- zwei-dezimal-places-in-c – Transcendent

Antwort

31

Sie Dividieren durch einen int, wil es ein int als Ergebnis.

averagesDoubles = (sumInt/(double)ratingListBox.Items.Count); 

Die averagesDoubles = Math.Round(averagesDoubles, 2); ist reponsible zum Runden des doppelten Wert: erste

(die 13/7 = 1 macht) Versuchen, es zu einer Gleitkomma-Gießen. Es wird abgerundet, 5.976 bis 5.98, aber dies hat keinen Einfluss auf die Darstellung des Wertes.

Die ToString() ist verantwortlich für die Darstellung von Dezimalzahlen.

Versuchen:

averagesDoubles.ToString("0.0"); 
4

Sie überprüfen, ob averagesDoubles Doppel- oder dezimal gemäß der Definition von Math.Round und kombinieren diese beiden Linien ist:

averagesDoubles = (sumInt/ratingListBox.Items.Count); 
averagesDoubles = Math.Round(averagesDoubles, 2); 

TO:

averagesDoubles = Math.Round((sumInt/ratingListBox.Items.Count),2); 

2 im obigen Fall stellt die nu Dezimalzahlen, die Sie abrunden möchten. Überprüfen Sie den Link oben für mehr Referenz.

1

int Division wird immer Fraktion ignorieren

(sumInt/ratingListBox.Items.Count); here sunint is int and ratingListBox.Items.Coun is also int , so divison never results in fraction 

to get the value in fraction , you need to datatype like float and type cast the sumInt and count to float and double and then use divison