![](/img/trans.png)
[英]Input string was not in a correct format. Converting String to double
[英]Trying to parse a string to a double, getting “Input string was not in a correct format.”
我需要將數據表中的字符串解析為double。 我有一個數據表(dt),它有不同的列,每個列都使用.ToString()
方法轉換為字符串。 但是,當我嘗試輸出數據的緯度和經度時,我收到錯誤“輸入字符串格式不正確”。 所以我想我的主要問題是,如何使用.ToString()
方法解析轉換為字符串的對象中的文本。
using System;
using System.IO;
using System.Collections;
using System.Data;
namespace SalesMap
{
class SalesMap
{
private static DataTable InitData1()
{
//Datatable for entire list of zipcodes
DataTable datat = new DataTable("DATA");
DataColumn state = new DataColumn();
DataColumn county = new DataColumn();
DataColumn statecounty = new DataColumn();
DataColumn latitude = new DataColumn();
DataColumn longitude = new DataColumn();
DataColumn salesperson = new DataColumn();
//Add the columns to the datatable
datat.Columns.Add(state);
datat.Columns.Add(county);
datat.Columns.Add(statecounty);
datat.Columns.Add(latitude);
datat.Columns.Add(longitude);
datat.Columns.Add(salesperson);
return datat;
}
private static String InitPath()
{
string path = "C:/Documents and Settings/Andre/Desktop/salesmapdata/MapPointCountyLatLong.csv";
return path;
}
public static void Main()
{
try
{
DataTable dt = InitData1();
StreamReader sr = new StreamReader(InitPath());
String csvData = string.Empty;
while ((csvData = sr.ReadLine()) != null)
{
String[] data = csvData.Split(',');
//dt.Rows.Add(data);
DataRow newRow1 = dt.NewRow();
newRow1[0] = data[0].ToString(); //state
newRow1[1] = data[1].ToString(); //county
newRow1[2] = data[2].ToString(); //state|county
newRow1[3] = data[3].ToString(); //latitude
newRow1[4] = data[4].ToString(); //longitude
newRow1[5] = data[5].ToString(); //salesperson
dt.Rows.Add(newRow1);
Console.WriteLine("Row added for: dt");
}
foreach (DataRow row1 in dt.Rows)
{
double latitude1 = Double.Parse(row1[3].ToString());
double longitude1 = Double.Parse(row1[4].ToString());
if (row1[5].ToString() != "UNKNOWN" || row1[5].ToString() != "SALESMAN")
{
Console.WriteLine(latitude1);
Console.WriteLine(longitude1);
}
}
dt.WriteXml(@"c:\test\dt1.xml");
sr.Close();
}
catch (Exception e)
{
StreamWriter sw = new StreamWriter(@"c:\test\error.txt");
sw.WriteLine(e.Message.ToString());
sw.Close();
}
}
}
}
首先,當從CSV文件讀取數據時,您不需要在每個數組元素上調用data[x].ToString()
,因為它們已經是字符串。
Double.Parse調用可能存在的幾個潛在問題:
string.IsNullOrWhitespace()
或類似的東西。 Decimal.Parse()
的重載接受Culture作為參數(您可以提供CultureInfo.InvariantCulture
或任何其他CultureInfo
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.