0

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

对不起,我的英语不好

4

4 回答 4

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
于 2013-10-11T20:40:43.117 回答
2

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

于 2013-10-11T20:41:04.927 回答
1

在您的主题中提出的问题是直截了当的。您可以像这样将字符串转换为浮点数:

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

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

于 2013-10-11T20:42:20.737 回答
-1

这可能会得到你想要的:

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

    foreach (var item in inputArray )
    {
        results += float.Parse(item);
    }
于 2013-10-11T20:46:04.577 回答