Spróbuj czegoś z widokiem, ale ten problem bardzo mnie zirytował. Próbuję pobrać wartość z zestawu danych, a następnie użyć jej do wykonania pewnych obliczeń. w zbiorze danych, który jest postrzegany jako obiekt, więc muszę go przesłać do int lub podwójnego. Z jakiegoś powodu dostaję głupi błąd, który działa mi na nerwy. Oto kod.C# cast error (infinte value .... what?)
private void SpendsAnalysis()
{
float tempQty = 0;
float tempPrice = 0;
double tempTot = 0;
double total = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
tempQty = (float)row.Cells["Qty"].Value;
tempPrice = (float)row.Cells["Unit"].Value;
tempTot = tempQty * tempPrice;
total += tempTot;
}
textBox7.Text = total.ToString();
}
Generowany: "Określony rzut nie jest prawidłowy." (System.InvalidCastException) podczas przesyłania formularza liczba musi być mniejsza niż nieoficjalność. To jest irytujący błąd, który dostaję. teraz otrzymuję dane z mojego zbioru danych, który pobiera dane z procedury składowanej. Wierzę, że typ pola "Qty" to waluta (yeh, dlaczego jest qty waluta haha, nie moje tabele!). w moim widoku datagrid wygląda na 1.000, czy to ze względu na konwersję typu? jak to naprawić? Wielkie dzięki z góry!
'float' jest na pewno gorsze niż mecz' currency' lub 'po przecinku '. Ale brzmisz jak powinna być liczbą całkowitą. Każde 'float' /' double' występujące w kalkulacji pieniężnej jest dużą czerwoną flagą. – CodesInChaos
Zgadzam się, ale są to wartości ustawione przez oryginalną tabelę. rzucam ją do wartości, z którą mogę pracować, ither double lub float – lemunk
A dlaczego nie "Decimal"? Możesz użyć wartości dziesiętnej w języku C# i jest to z pewnością lepszy wybór niż opcja 'float' lub' double'. – CodesInChaos