0

こんにちは、電卓を作成しています。これらの値を float 文字列 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

あなたの件名で尋ねられた質問は簡単です。次のように、文字列を float に変換できます。

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 に答える