現在、ncalc ライブラリを使用していくつかの評価を行い、結果を取得しています。
現在、価格が「1,234.01」の形式の場合、式の評価に失敗するという問題が見つかりました。
私が使用した現在の回避策はを削除することでしたが、たとえば,
を削除せずに通貨を評価する方法があるかどうか疑問に思っていました:,
decimal price = 0;
if (!decimal.TryParse(iPrice.Text, out price))
{
MessageBox.Show("Price is not formatted correctly...");
return;
}
decimal currency = 0;
if (!decimal.TryParse(iCurrency.Text, out currency))
{
MessageBox.Show("Currency is not formatted correctly...");
return;
}
string formula = iFormula.Text.Replace("Price", price.ToString("n2")).Replace("Currency", currency.ToString("n2"));
Expression exp = new Expression(formula);
exp.Evaluate();
価格が原因で評価が失敗し,
、それを削除すると問題なく機能します。
式のサンプル:
(((Price+12,9)+((Price+12,9)*0,05)+(((Price+12,9)+((Price+12,9)*0,05))*0,029)+0,45)*Currency)
要求されたスタックトレース:
NCalc.EvaluationException was unhandled
Message=mismatched input ',' expecting ')' at line 1:4
mismatched input ',' expecting ')' at line 1:20
mismatched input ',' expecting ')' at line 1:43
mismatched input ',' expecting ')' at line 1:59
missing EOF at ')' at line 1:77
Source=NCalc
StackTrace:
at NCalc.Expression.Evaluate()