Я использую интерпретатор BeanShell в Java для решения строковых вычислений. проблема в том, что я сам выполняю некоторый синтаксический анализ, который не может быть выполнен интерпретатором, и сохраняю частичный результат в 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 и с огромными числами?