こんにちは、電卓を作成しています。これらの値を float 文字列 num = "2+6+8+9"; に変換したいと考えています。彼らは自動的に合計25を追加しますか?とにかくこれを行うことはありますか?
私の悪い英語でごめんなさい
こんにちは、電卓を作成しています。これらの値を float 文字列 num = "2+6+8+9"; に変換したいと考えています。彼らは自動的に合計25を追加しますか?とにかくこれを行うことはありますか?
私の悪い英語でごめんなさい
使用してください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
式評価者を探しています。たくさんあります。例: http://csharpeval.codeplex.com/
あなたの件名で尋ねられた質問は簡単です。次のように、文字列を float に変換できます。
double f = double.Parse("2.5");
ただし、質問で説明されているように任意の式を処理する場合は、もう少し作業が必要です。幸いなことに、他の人がこの作業を行っています。私は独自の式エバリュエーターを作成しました。記事AC# Expression Evaluatorで確認できます。質問のサンプル式をサポートするだけでなく、変数と関数もサポートしています。
これにより、必要なものが得られる場合があります。
string[] inputArray = Regex.Split(num, @"\D+");
float results = 0;
foreach (var item in inputArray )
{
results += float.Parse(item);
}