Prob 뭔가가 내려다 보이지만이 문제는 나를 크게 괴롭혔습니다. 메신저가 데이터 집합에서 값을 가져 와서 일부 계산을 수행하는 데 사용하려고합니다. 데이터 세트의 을 객체로 간주하므로 int 또는 double로 형변환해야합니다. 어째서 나는 내 신경을 쓰고있는 바보 같은 오류를 받고있다. 코드를 heres.C# 캐스팅 오류 (무엇입니까?)
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();
}
Throw : "지정된 캐스트가 유효하지 않습니다." (System.InvalidCastException) 숫자를 캐스팅 할 때 inifnite보다 작아야합니다. 이것은 점점 성가신 오류입니다. 이제 저장 프로 시저에서 데이터를 가져 오는 데이터 집합에서 데이터를 가져옵니다. "Qty"필드 유형이 통화라고 생각합니다 (예, 왜 qty currency haha입니까, 내 테이블이 아닙니다!). 내 DataGrid보기에서 1.000처럼 보이는데, 이것은 유형 변환으로 인한 것입니까? 내가 어떻게 이걸 교정 할까? 미리 감사드립니다.
는'float' 확실히 currency' 또는 '소수'보다 더 나쁜 일치 '. 하지만 정수형이어야한다고 생각합니다. 통화 계산에서 발생하는'float' /'double'은 큰 붉은 깃발입니다. – CodesInChaos
이 동의하지만 이들은 원래 테이블에 의해 설정된 값입니다. 내가 작동 할 수있는 값으로 캐스팅했습니다. ither double 또는 float – lemunk
왜 'Decimal'이 아닌가요? C#에서는 10 진수를 사용할 수 있습니다. 여기서는 'float'또는 'double'보다 확실히 좋은 선택입니다. – CodesInChaos