2012-10-11 2 views
0

Я создал программу для чтения/записи с данными из другой программы. Я установил значение 7 (типа памяти real) в программе, тогда, когда я прочитал значение в visual studio, он дал мне строку 7.0000000000000. Поэтому я создал этот фрагмент преобразования, который работает для данных типа int, который также дает мне строку в VS. Я не знаю разницы между этими двумя типами данных, но логически, если оба типа данных дают мне строку , я должен иметь возможность запускать этот код. Почему данные реальных данных пропускают, если здесь?int to unknown to double conversion issue

if (Regex.IsMatch(value, "^[0-9 ]+$")) 
       { 
        ValueBox.Text = Double.Parse(value).ToString(); 
       } 
       else 
       { 
        ValueBox.Text = value; 
       } 

EDIT: Я использую 2 данные библиотеки DLL, я считаю, что есть проблема преобразования в DLL, но мой код должен еще работы.

EDIT 2: Этот код является разделом из моей программы, стоимости и других переменных уже определены

+0

Вы пытались воспроизвести это локально в функции? т.е. объявить и инициализировать 'значение' до условия? Это может помочь понять, в чем проблема. – jheddings

+0

Вы разрешаете пространство в регулярном выражении. – Paparazzi

+0

@Blam Не могли бы вы быть более конкретными? –

ответ

0

У вас есть дополнительное пространство в своем регулярном выражении после диапазона чисел, но это не должно быть слишком много проблема. Как он написан, ваше регулярное выражение будет соответствовать любой последовательности чисел или пробелов.

Это будет соответствовать целому строки только:

if (Regex.IsMatch(value, "^[0-9]+$")) 
... 

я не уверен, если это проблема на основе инициализации value, но это, конечно, не будет соответствовать целому строки.

Если вам необходимо учитывать для десятичных значений в регулярных выражениях:

if (Regex.IsMatch(value, "^[0-9]+(\.[0-9]+)?$")) 
... 
+0

Я забыл упомянуть. Раньше у меня всегда был ex: program int = 5 дал мне строку 5.00000.Мой код работает, и он преобразует строку в 5, но для этого другого типа это не так. –

0

В вашем вопросе четко не указано, откуда берется value.

Я подозреваю, что вы должны использовать один из перегруженных методов .ToString() для преобразования исходного типа данных в value.
Затем конвертировать ValueBox.Text использовать обратно Convert.ToDouble() (или соответствующий метод для желаемого типа вывода). Вы также можете использовать Double.TryParse() (или соответствующий тип), который я предпочитаю.

Ссылки: Double.ToString Method (String)
Standard Numeric Format Strings
Custom Numeric Format Strings
Double.TryParse Method (String, Double%)