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 odpowiedziPró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?