Prob algo estoy pasando por alto, pero este problema me ha molestado mucho. Estoy tratando de obtener un valor de un conjunto de datos y luego lo uso para hacer algunos cálculos. en el conjunto de datos se ve como un objeto, por lo que tengo que convertirlo en un int o doble. Por alguna razón estoy recibiendo un error estúpido que me está poniendo de los nervios. Aquí está el código.C# error de fundición (valor infinte .... ¿qué?)
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();
}
Lanzamiento: "El modelo especificado no es válido." (System.InvalidCastException) al convertir un número, debe ser menor que inifnite. Este es el error molesto que recibo. ahora obtengo los datos de mi conjunto de datos, que obtiene sus datos de un procedimiento almacenado. Creo que el tipo de campo "Cantidad" es la moneda (sí, ¿por qué es qty moneda jaja, no mis tablas!). en mi vista de cuadrícula de datos parece 1,000, ¿esto se debe a una conversión de tipo? ¿Cómo puedo rectificar esto? ¡Muchas gracias de antemano!
'float' es sin duda un partido peor que' 'currency' o decimal '. Pero parece que debería ser un número entero. Cualquier 'flotante'/'doble' que ocurra en un cálculo monetario es una gran bandera roja. – CodesInChaos
de acuerdo, pero estos son valores establecidos por la tabla original. Estoy lanzándolo a un valor con el que puedo trabajar, doble o flotante – lemunk
¿Y por qué no 'Decimal'? Puede usar decimal en C#, y ciertamente es una mejor opción que cualquiera de los modos 'float' o' double' aquí. – CodesInChaos