我有這樣的C#中,如何計算一個操作字符串
str = "4975 + 10 * (LOG(250.6)) - 321.2"
我要計算這個操作的結果的字符串。 有沒有什麼排序的方式來做到這一點?
// my operation just includes some of operators (,), +, -, *,/, ., 0-9, LOG
// '.' is used for double number
我有這樣的C#中,如何計算一個操作字符串
str = "4975 + 10 * (LOG(250.6)) - 321.2"
我要計算這個操作的結果的字符串。 有沒有什麼排序的方式來做到這一點?
// my operation just includes some of operators (,), +, -, *,/, ., 0-9, LOG
// '.' is used for double number
我相信這就是你要找的。
使用這個庫將幫助你在字符串格式進行數學運算
添加這個包
安裝,包裝DynamicExpresso.Core
代碼示例
public static void Main(string[] args)
{
var interpreter = new Interpreter();
var result = interpreter.Eval("4975 + 10 * (LOG(250.6)) - 321.2".Replace("LOG", "Math.Log"));
Console.WriteLine("result=> " + result);
Console.ReadKey();
}
結果=> 4709.03858042462
link for LIB https://github.com/davideicardi/DynamicExpresso
謝謝。這真的很有幫助。我甚至發現了一個我真正需要的功能(使用變量和參數)。 –
還回答了在這裏:
我沒有一個.net箱躺在附近,所以我不能確定是否可以做log
或不,但我用它來表達長期的代數。
基本上,這是怎麼一回事呢:
DataTable dt = new DataTable();
var ans = dt.compute("5 + (7 - 9)/3");
是的,但是DataTable在dotnet核心中是有限的和不可用的。 –
它使用雙數和「+ - * /」運算符運行良好。但它不適用於Log。我得到這樣一個異常: 未處理的異常:System.Data.EvaluateException:該表達式包含未定義的函數調用Log()。 –
@Rob我不認爲這是OP是思維的:) –
的一小段路無有做這種沒有短的路,你必須解析字符串或提供一個用戶界面,允許某人輸入數字並按下日誌,減去,添加按鈕,又稱計算器界面,而不必根本解析字符串 –
您可以查看該帖子http:// stackoverflow。 com/questions/333737/evaluate-string-342-yield-int-18 – hardkoded