.NET Двойное хранилище в DataTable?

.NET выглядит так, как будто он форматирует двойной тип в DataRow в неправильном формате, поэтому я не могу загрузить его через секунду. Если я храню "0.000000001",.NET сохраняет его как "1E-09.0", тогда как "1E-09". Поэтому Convert.ToDouble ("1E-09.0") возвращает исключение FormatException. Вот код, который я использую:

// create table
DataTable t = new DataTable("test");
t.Columns.Add("FirstInt", typeof(int));
t.Columns.Add("SecondDouble", typeof(double));
t.Columns.Add("ThirdInt", typeof(int));

// create row data
object[] data = new object[] { 10, 0.000000001, 10 };

// add row data: "0.000000001" is stored as "1E-09.0"
t.Rows.Add(data);

// FormatException is thrown here, since "1E-09.0" should be "1E-09"
double d2 = Convert.ToDouble(t.Rows[0]["SecondDouble"]); 

Я также пытался с приведением, но код выдает меня "InvalidCastException". Double.Parse не работает так же хорошо.

Решение:

// create table
DataTable t = new DataTable("test");
t.Columns.Add("FirstInt", typeof(int));
t.Columns.Add("SecondDouble", typeof(string)); // convert double to string
t.Columns.Add("ThirdInt", typeof(int));

// create row data and convert value to string
double value = 0.0000000001;
string valueString = value.ToString("F9");
object[] data = new object[] { 10, valueString, 10 };
t.Rows.Add(data);

// load data
double d2 = Convert.ToDouble(t.Rows[0]["SecondDouble"]); 

0 ответов

Другие вопросы по тегам