2012-06-26 11 views
7

Witam jestem początkujący ac by ktoś grzecznie powiedz mi jak konwertować wartości tego fragmentu kodu do podwójnego/zaokrąglonym przecinku # .. z góry dziękiprzekształcania się podwoić do dwóch miejsc po przecinku

DataTable dtValues = new DataTable("GetValues"); 

strValueNumber = ValueNumber[0].ToString(); 
dtGetValues = SQLMethods.GetValues(strValueNumber); 

total = 0; 

for (int i = 0; i < dtValues.Rows.Count; i++) 
{ 
    total1 = total1 + Convert.ToInt32(dtGetValues.Rows[i]["total_1"]);     
    total2 = total2 + Convert.ToDouble(dtGetValues.Rows[i]["total_2l"]) * .45; 

    tbtotal1.Text = total1.ToString(); 
    tbtotal2.Text = total2.ToString(); 
} 
}    
catch (Exception ex) 
{ 
    MessageBox.Show("Error in returning selected Values. " + 
        "Processed with error:" + ex.Message); 
} 
} 
+0

Powinieneś prawdopodobnie ustawić pola tekstowe poza pętlą. "total" jest zadeklarowane, ale nie jest używane. 'total1' i' total2' powinny być ustawione na zero przed pętlą. – MiMo

Odpowiedz

11

użytkowania Math.Round

Math.Round(mydoublevalue, 2); 

W kodzie

tbtotal2.Text = Math.Round(total2, 2).ToString(); 
+0

dziękuję za pomoc .... Spróbuję tego – user1483145

+0

@ user1483145: również, jak mówisz, jesteś nowicjuszem, warto zauważyć, że .net i dlatego C# ma typ danych o nazwie "dziesiętny", który jest dokładniejsze z reprezentacją liczb dziesiętnych niż "podwójne". –

+0

dzięki philip .. – user1483145

1

Czy to tak.

tbtotal1.Text = Math.Round(double.Parse(total1.ToString()), 2).ToString(); 
tbtotal2.Text = Math.Round(double.Parse(total2.ToString()), 2).ToString(); 
+0

Poprawiłem mój błąd. – Adil

4

Jeśli chcesz tylko wartość zaokrągloną do wyświetlania w postaci ciągu znaków, można również użyć String.Format.

tbtotal1.Text = String.Format("{0:0.##}", total1); 

Tekst "{0: 0. ##}" opisuje, w jaki sposób ma być sformatowany. Symbol # wskazuje, że zera końcowe nie powinny być uwzględnione (np. 1.2 pozostaje w łańcuchu "1.2"), jeśli zamiast tego "{0: 0.00}", uwzględniane są dwa miejsca po przecinku, bez względu na to, co oznacza, że ​​podwójne 1,2 będzie "1.20 ".

0

inputValue = Math.Round (inputValue, 2);

+1

Czy możesz dopracować, aby dodać trochę kontekstu do swojej odpowiedzi? –

2

Moja odpowiedź jest dość późno, ale dla tych, którzy tam jak ja, którzy chcą:

konwertować do double/przecinku i również ma wartość zawsze pokazać 2 miejsc po przecinku (0,00) jakString

tbtotal2.Text = Math.Round(total2, 2).ToString("#.00"); 

Poniższe oznacza zawsze dwa miejsca po przecinku.

"#.00" 

Poniższe oznacza dwa miejsca po przecinku, jeśli istnieje wartość.

"#.##" 
Powiązane problemy