【发布时间】:2012-01-15 17:42:50
【问题描述】:
可能我忽略了一些东西,但这个问题让我非常恼火。 我试图从数据集中获取一个值,然后用它来做一些计算。 在数据集中它被视为一个对象,所以我需要将它转换为 int 或 double。 出于某种原因,我遇到了一个愚蠢的错误,这让我很紧张。这是代码。
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();
}
抛出:“指定的演员表无效。” (System.InvalidCastException) 铸造数字时,必须小于无穷大。这是我得到的烦人的错误。现在我从我的数据集中获取数据,该数据集从存储过程中获取数据。 我相信“数量”字段类型是货币(是的,为什么是数量货币哈哈,而不是我的表格!)。在我的数据网格视图中,它看起来像 1.000,这是由于类型转换吗?我将如何纠正这个问题? 非常感谢!
【问题讨论】:
-
float肯定比currency或decimal更差。但你听起来应该是一个整数。在货币计算中出现的任何float/double都是一个大危险信号。 -
同意,但这些是原始表设置的值。我将其转换为我可以使用的值,双精度或浮点数
-
为什么不
Decimal?您可以在 C# 中使用小数点,这肯定是比float或double这里更好的选择。
标签: c# winforms casting dataset