Java で BeanShell Interpreter を使用して、文字列計算を解決しています。問題は、インタープリターでは実行できない解析を自分で行い、部分的な結果を BigInteger に格納することです。次に、すべてをつなぎ合わせて、解決するインタープリターを提供しますが、次のエラーメッセージが表示されるため、BigInteger.toPlainString()
受け取る数値が大きすぎます。interpreter.eval(...)
Parse error at line 1, column 10 : Error or number too big for integer type: 2432902008176640000
Parse error at line 1, column 10 : Error or number too big for integer type: 2432902008176640000
計算文字列は次のように構成されます。
BigDecimal x = new BigDecimal(/*very big number*/);
BigDecimal y = new BigDecimal(/*very big number*/);
String s = x.toPlainString() + "+" + y.toPlainString();
Interpreter i = new Interpreter();
i.eval("result = " + s);
s = i.get("result").toString();
この場合、BigDecimal の提供された関数によって単純に数値を加算できることはわかっていますが、私の場合、計算ははるかに複雑です! beanshell エバリュエーターを膨大な数でも使用できるようにするための回避策はありますか?