2012-10-11 36 views
0

我创建了一个程序来读取/写入来自另一个程序的数据。我在程序中设置了7的值(真正的内存类型),然后当我在Visual Studio中读取值时,它给了我一个字符串7.0000000000000。所以我创建了这个转换片段,它适用于类型为int的数据,这也给了我一个VS中的字符串。我不知道这两种数据类型之间的差异,但逻辑上,如果两种数据类型都给我一个字符串,我应该可以运行此代码。为什么内存真实数据会跳过这里?int未知到双重转换问题

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

编辑:我用2个给出的dll文件,我相信这是一个转换的问题在DLL中,但我的代码应该仍然工作。

编辑2:此代码是从我的节目,值和其他变量一节已被定义

+0

你试图在功能本地重现此?即在条件之前声明并初始化“值”?这可能有助于了解问题所在。 – jheddings

+0

您正在允许正则表达式中的空间。 – Paparazzi

+0

@布拉姆可以请你更具体吗? –

回答

0

你必须在号码范围后您的正则表达式的额外的空间,但不应该是太大的问题。写它的方式,你的正则表达式将匹配任何序列的数字或空格。如果这是基于对value初始化一个问题

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

我不知道,但肯定不会匹配的整数字符串:

这将只匹配整型字符串。

如果你需要考虑你的正则表达式的十进制值:

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%)