我创建了一个程序来读取/写入来自另一个程序的数据。我在程序中设置了一个值7(类型为memory real),然后当我在visual studio中读取它时,它给了我一个字符串7.0000000000000
。所以我创建了这个转换片段,它适用于int类型的数据,它也在VS中给我一个字符串。我不知道这两种数据类型之间的区别,但从逻辑上讲,如果两种数据类型都给我一个字符串,我应该能够运行这段代码。为什么内存真实数据会跳过if?
if (Regex.IsMatch(value, "^[0-9 ]+$"))
{
ValueBox.Text = Double.Parse(value).ToString();
}
else
{
ValueBox.Text = value;
}
编辑:我使用了2个给定的dll,我相信dll中存在转换问题,但我的代码仍然工作。
编辑2:此代码是我的程序的一部分,值和其他变量已经定义
答案 0 :(得分:6)
答案 1 :(得分:0)
你的正则表达式在数字范围之后有一个额外的空间,但这不应该是一个太大的问题。它的编写方式,你的正则表达式将匹配任何数字或空格序列。
这只匹配一个整数字符串:
if (Regex.IsMatch(value, "^[0-9]+$"))
...
我不确定这是否是基于value
初始化的问题,但它肯定不会与整数字符串匹配。
如果您需要在正则表达式中考虑小数值:
if (Regex.IsMatch(value, "^[0-9]+(\.[0-9]+)?$"))
...
答案 2 :(得分: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%)