C# で奇妙な問題に直面しています。そこでは、 で割ることができる数学的な文字列式を評価する必要があります0
。次に例を示します。
string expression = GetUserInput(); // Example: "(x + y) / z", where z may equal to 0
現在、この式を評価するためにNCalcライブラリを使用しています。これは、現在の式の引数が であるDivideByZeroException
場合に をスローします。z
0
私は次のようにして例外をキャッチしようとしました:
try {
string formula = GetUserInput();
Expression exp = new Expression(formula);
// ...
exp.Evaluate(); // Throws a DivideByZeroException
} catch (DivideByZeroException e) {
//ignored
}
ただし、この式を (さまざまな変数を使用して) 時間効率の良い方法で 6000 回以上評価する必要があるため、毎回例外をキャッチすると、アプリケーションの速度が大幅に低下します。
そのような式が複数あり、それぞれがユーザーによって入力されます。特定の式がゼロで除算しようとしているかどうかはわかりません。
C# の数式を "安全な" 方法で評価する方法はありますか? 例外をスローすることなく、除算を試みると0
静的な数値 (または無限大) が返されますか?0