System.FormatException 控制台应用程序 C# 中的输入字符串格式错误?
System.FormatException Input string was not in a correct format error in Console Application C#?
当 row[colname]="NULL" 和 "ABC" 的值时出现错误 有什么办法可以避免它!!
我什至尝试尝试解析,但我收到错误无法将对象转换为字符串 row[colname]
(注释代码)
'System.FormatException' 类型的未处理异常发生在 mscorlib.dll
foreach (DataRow row in csvData.Rows)
{
//var Result = double.TryParse(row[colname], out myDec);
if (Convert.ToDouble(row[colname]) >= med1 && Convert.ToDouble(row[colname]) <= med2)
{
al.Add(Convert.ToDouble(row[colname]));
//Console.WriteLine("value greater than 20 % median= {0}", Convert.ToDouble(row["Data Value"]));
}
一个简单的问题:为什么注释行 var Result = double.TryParse(row[colname], out myDec);
?这是做这件事的正确方法。您收到该异常只是因为 Convert.To()
无法转换 row[colname]
中的值,当 double.TryParse()
进入该角色时,您可以检查 return 值的转换状态和使用 out 变量中的 out 值;代码将是这样的:
foreach (DataRow row in csvData.Rows)
{
double myDec;
if (row[colname] != null && double.TryParse(row[colname].Tostring(), out myDec))
{
if (myDec >= med1 && myDec <= med2)
{
al.Add(myDec);
}
}
}
请注意:如果有机会在 row[colname]
中获得 DbNull
,请包括 row[colname] !== DbNull.Value
出现问题是因为您试图将 "NULL" 和 "ABC" 转换为双精度类型,这是根本不可能的。试试这个:
double myDec;
foreach (DataRow row in csvData.Rows)
{
double.TryParse(row[colname]?.ToString(), out myDec)
if (myDec >= med1 && myDec <= med2)
{
al.Add(myDec);
}
使用row[colname]?.ToString()
将row[colname]
从对象转换为字符串。 double.TryParse(String, Double)
要求第一个参数是字符串而不是对象。
当 row[colname]="NULL" 和 "ABC" 的值时出现错误 有什么办法可以避免它!!
我什至尝试尝试解析,但我收到错误无法将对象转换为字符串 row[colname]
(注释代码)
'System.FormatException' 类型的未处理异常发生在 mscorlib.dll
foreach (DataRow row in csvData.Rows)
{
//var Result = double.TryParse(row[colname], out myDec);
if (Convert.ToDouble(row[colname]) >= med1 && Convert.ToDouble(row[colname]) <= med2)
{
al.Add(Convert.ToDouble(row[colname]));
//Console.WriteLine("value greater than 20 % median= {0}", Convert.ToDouble(row["Data Value"]));
}
一个简单的问题:为什么注释行 var Result = double.TryParse(row[colname], out myDec);
?这是做这件事的正确方法。您收到该异常只是因为 Convert.To()
无法转换 row[colname]
中的值,当 double.TryParse()
进入该角色时,您可以检查 return 值的转换状态和使用 out 变量中的 out 值;代码将是这样的:
foreach (DataRow row in csvData.Rows)
{
double myDec;
if (row[colname] != null && double.TryParse(row[colname].Tostring(), out myDec))
{
if (myDec >= med1 && myDec <= med2)
{
al.Add(myDec);
}
}
}
请注意:如果有机会在 row[colname]
DbNull
,请包括 row[colname] !== DbNull.Value
出现问题是因为您试图将 "NULL" 和 "ABC" 转换为双精度类型,这是根本不可能的。试试这个:
double myDec;
foreach (DataRow row in csvData.Rows)
{
double.TryParse(row[colname]?.ToString(), out myDec)
if (myDec >= med1 && myDec <= med2)
{
al.Add(myDec);
}
使用row[colname]?.ToString()
将row[colname]
从对象转换为字符串。 double.TryParse(String, Double)
要求第一个参数是字符串而不是对象。