0

数式の値を評価する式パーサーを作成しようとしています。ただし、問題は、無理数に評価される特定のカテゴリの式にあります。

次のような例を見てみ(√2)² ましょう。これは次のように評価され2ます。ただし、ロジックにより、プログラムは小数のポイント数を返します。

最初√2に等しいが評価され1.4142135、次に結果が二乗されて1.9999998

現在、できることは、JLinkを介して式をMathematicaに送信し、その結果を使用することです。ただし、これにはサードパーティのソフトウェアが必要です。

このすべてをJavaで実装できるかどうか知りたいです。

4

2 に答える 2

3

はい、確かにJavaで式パーサーを実装できます。あなたの根本的な誤りはJavaプログラミングではなく、プログラム設計にあると思います。

できるだけ遅くまでsurdsを評価するべきではありません。(sqrt(n))^2代わりに、 tosqrt(n)*sqrt(n)sqrt(n)*sqrt(n)toなどの式を評価する必要がありますnnその場合にのみ、同等の浮動小数点数への変換を検討する必要があります。

アプローチのエラーとして特定したのは、浮動小数点演算の機能であり、これと戦うのに苦労します。より良い戦略は、シンボリック式にシンボリック演算を実装することによってそれを回避することです。

于 2012-11-22T15:35:03.537 に答える
0
Double value = new Double(2);
Double power = new Double(2);
Double result = Math.pow(value, power);
result = Math.sqrt(result);
System.out.print(result);
于 2012-11-22T15:32:25.607 に答える