c # dodawanie liczb float zachowuje się dziwnie [duplikat]

To pytanie ma już tutaj odpowiedź:

Czy ktoś może wyjaśnić mi tę dziwaczną zmienną zmiennoprzecinkową? 3 odpowiedzi

Próbuję dodać komórki wiersza i wyświetlić sumę w nowej komórce w siatce. Korzystam z gridControl z DevExpress. Siatka ma 12 kolumn reprezentujących miesiące w roku i chcę dodać wartości miesięcy i wyświetlić sumę w 13. kolumnie.

Mój problem polega na tym, że jeśli mam wartość zmiennoprzecinkową „111,22”, jest ona dodawana jako „111,2188” do bazy danych i wyświetlana bez precyzji w 13. komórce.

Mam dwa problemy. Pierwszy to „dlaczego wstawia go jako 111,2188 do bazy danych?” a drugi to „dlaczego wyświetla sumę”.

Oto mój kod ... to się dzieje, gdy dodaję 111,2188 i 200, a otrzymam 211 2188 ....

private void calculate_gv_row_total(int row_index) {
    float total = 0;
    for (int j = 0; start_index + j < start_index + months; j++)
    {
        float f = float.Parse(gv.GetDataRow(row_index)[start_index + j].ToString());
        total = total + f;
    }
    gv.GetDataRow(row_index)[total_cell_index] = total;

}

jak mogę rozwiązać te problemy? Co ja robię źle?

questionAnswers(2)

yourAnswerToTheQuestion