我目前正在获取字符串的值,并希望将其置于INT中以开始计算。
字符串值,例如是p2 = 33.7;这实际上是以摄氏度为单位的温度读数
这是我用来将p2转换为INT:
value = Convert.ToInt32(p2);
tavg = val / cnter;
cnter++;
此代码用于将转换后的值放置到datagridview行单元格中:
todayRow.Cells[index++].Value = tavg.ToString();
this.weatherreport_dgv.Rows.Add(todayRow);
VS2013给出的错误信息是:
“mscorlib.dll中发生了'System.FormatException'类型的异常,但未在用户代码中处理。附加信息:输入字符串的格式不正确。”
错误指向p2转换为INT
答案 0 :(得分:2)
33.7
是十进制值,Int32
只有整数。使用Convert.ToDouble/double.Parse
获取浮点值:
double value = double.Parse( p2 );
或者如果你真的想要它作为一个整数:
int value = (int)double.Parse( p2 );
但你会丢失小数。
答案 1 :(得分:1)
使用int.TryParse
方法!
int p = 0;
int.TryParse(p2, out p);
同样在您的代码中,值为十进制表示您需要调用:
decimal p = 0;
decimal.TryParse(p2, out p)
如果字符串的格式不是数字,则p将返回0。问题来自你提供的格式错误。
修改强>
您可以设置解析小数的文化。例如,如果您要从法国文化中解析小数,因为它们具有“,”十进制,您将需要:
decimal.TryParse(qz, NumberStyles.AllowDecimalPoint, CultureInfo.CreateSpecificCulture("fr-FR"), out a);
答案 2 :(得分:0)
所以在这里。我再次尝试了所有人建议的所有步骤,这是我唯一一次注意到我的UDF中的第一个抛出的值是什么都没有。大声笑XD傻吧?真的很抱歉。
我做的第一件事是:
if (p1.Length > 0) //To check the data fetch if its null or has a value at all.
然后我可以跳过接受UDF中的空值。哪个绝对好? 然后由于其小数位,我得到了有关CulturalInfo值的问题。
所以我按照建议使用了这段代码:
value = double.Parse(p2, CultureInfo.InvariantCulture);//To convert value with decimal to Double
从那时起,我在datagridview中运行的值更平滑。 非常感谢你们所有人!的xD
(Hope Stackoverflow不会删除此问题以帮助其他人!)