ファイルの数式を読み、その値を評価する必要があります。例の表現形式は以下の通りです: - 定数 文字列の数式:NCalcの代替語
"3.1415 * 0.25"
-
"5"
定数式"{0} - 50"
- 値のプレースホルダ(String.Format()
)"Abs({0} - 50)"
と表現 - ちょうど好むが、数学関数と
私は今までNCalcを使用していましたが、これは急行に対処しなければならない
-
ちょうど次のコードの結果上記の例では残念ながら
"3.0 * Abs({0} + 34)"
:
var value = ReadValueFromSomewhere(); // Lets say it returns 125.75
var exprStr = ReadExpression(); // returns: "3.0 * Abs({0} + 34)"
var toEval = String.Format(exprStr, value);
var result = new NCCalc.Expression(toEval).Evaluate()
例外以下の通りである。以下のようなイオン
のSystem.InvalidOperationException
演算子 '*' をタイプ 'ダブル' と '小数' NCalc.Numbers.Multiply(オブジェクト、オブジェクト) NCalc.Domain.EvaluationVisitor.Visit(NCalc.Domain.BinaryExpression) NCalcのオペランドに適用することはできません.Domain.BinaryExpression.Accept(NCalc.Domain.LogicalExpressionVisitor) NCalc.Expression.Evaluate()
ABS()メソッドは、小数点を返し、NCalcはpropably(double
とdecimal
の間で計算をやって扱うことができないように思えますバグ?)。ですから、私はNCalcの代わりにどのような代替ライブラリを使うことができるのか尋ねたいと思います。
"Abs(3.0) * Abs({0} + 34)"
:または、おそらく表現以外の回避策はありますか?
これはバグですね。 2年前のこの問題についての質問があります:http://stackoverflow.com/q/29255487/4996248その質問は、このフォーラムにリンクし、回避策を提案します:https://ncalc.codeplex.com/discussions/346702 –