取消装箱失败要怎么处理,原本的数据是float类型的,为什么这样不可以呢
要怎么改一下?
DataTable dt = acc.GetSereachData(scn, SqlStr); Bitmap IMG = new Bitmap(1000,100000);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(IMG);
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red, 2);
for (int n = 0; n < dt.Rows.Count-2; n++)
{
System.Drawing.Point[] po = new System.Drawing.Point[10];
for (int i = 0; i <= 9; i ++)//设置宽
{
po[i] = new System.Drawing.Point((i+1)*100,(int)((Double)(dt.Rows[n][i + 2]))*10);//提示取消装箱失败
}
g.DrawLines(myPen, po);
}
IMG.Save("d:\\2.jpg");
要怎么改一下?
DataTable dt = acc.GetSereachData(scn, SqlStr); Bitmap IMG = new Bitmap(1000,100000);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(IMG);
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red, 2);
for (int n = 0; n < dt.Rows.Count-2; n++)
{
System.Drawing.Point[] po = new System.Drawing.Point[10];
for (int i = 0; i <= 9; i ++)//设置宽
{
po[i] = new System.Drawing.Point((i+1)*100,(int)((Double)(dt.Rows[n][i + 2]))*10);//提示取消装箱失败
}
g.DrawLines(myPen, po);
}
IMG.Save("d:\\2.jpg");
改为
Convert.ToInt32(dt.Rows[n][i + 2]))*10
(int)(Convert.ToDouble(dt.Rows[n][i + 2])*10)
dt.Rows[n][i + 2]的装箱之前,应该不是int,也不是double,估计是Decimal类型。装箱拆箱必须类型精确的一致,这里不是类型转换,要先拆箱。比较好的做法就是我给你的,虽然不高效,但通用。会调用object的ToString方法根据原本类型转换为字符串,然后解析出来。