2013-10-11 36 views
0

你好家伙我创建计算器,我想这些值转换为浮动 字符串NUM =“2 + 6 + 8 + 9”; 所以他们会自动添加并给出共25个? 有没有办法做到这一点?如何将字符串转换为浮动在C#

对不起我的英文不好

+0

'反正是有做到这一点'是的,你应该写一些代码? –

+0

'float string'?你想结束'num = 25','25'? '25.0'? –

+0

你需要使用jQuery。明显。 – blowdart

回答

6

使用DataTable.Compute ;-)

DataTable table = new DataTable(); 
int i = (int) table.Compute("2+6+8+9", null); // 25 

对于所有的规则和运营商的支持:DataColumn.Expression

如果你不知道结果的类型总是使用浮点型和System.Convert.ToDouble它接受一切的IConvertible,例如:

double d1 = System.Convert.ToDouble(table.Compute("2+6+8+9", null)); // 25.0 
double d2 = System.Convert.ToDouble(table.Compute("2+6+8+9/2", null)); // 20.5 
+2

这是超级酷 - 我完全不知道存在。我会假设你需要一个第三方表达式评估者,或者写你自己的。很高兴知道! – neminem

+0

这对我的工具箱来说非常棒。 – Bit

+0

真棒这就是我想要的东西:) 感谢 –

2

您正在寻找表达式评估器。有很多可用的。例如:http://csharpeval.codeplex.com/

+0

这是一个答案或评论? – I4V

+0

@ I4V这是一个答案。你认为这应该是一个评论? –

+0

@DavidHeffernan我认为,在SO上4年的经验足以知道只有链接的答案不受欢迎。 –

1

中为主体问的问题是直线前进。您可以将字符串转换为浮动是这样的:

double f = double.Parse("2.5"); 

但是,如果你想为你的问题,这需要更多的工作描述来处理任意表达式。幸运的是,其他人已经完成了这项工作。我写了自己的表达式求值器,你可以在我的文章A C# Expression Evaluator中看到它。除了支持问题中的示例表达式外,它还支持变量和函数。

-1

这可能会得到你想要的东西:

string[] inputArray = Regex.Split(num, @"\D+"); 
    float results = 0; 

    foreach (var item in inputArray) 
    { 
     results += float.Parse(item); 
    } 
+0

如果表达式包含“+”以外的运算符,该怎么办? –

+0

不管每个数字都会在数组中被拆分出来,无论是将它们分开的+ =正数。 – Bit

+1

不,@LB问你在以“7 * 6”为例时会发生什么,例如 –