Существуют ли какие-либо библиотеки для таблиц Apache POI, которые могли бы обрабатывать формулы с большей точностью, чем двойные? - PullRequest
3 голосов
/ 17 марта 2011

Первоначально я был после BigDecimal с большей функциональностью, чем простой + - * /, что значительно меньше, чем то, что доступно на java.lang.Math.

Пожалуйста, не комментируйте о грехе и подобных функциях, которые производят или требуют иррациональных чисел, которые не подходят. Простой ответ на этот вопрос - использовать MathContext с подходящим / разумным пределом точности. Изначально я выбрал только BigDecimal просто потому, что он предлагает больше цифр точности, которые удваиваются.

Одна идея, которая у меня возникла, состояла в том, чтобы использовать библиотеку Apache Poi, надеясь, что она содержит работающий интерфейс Function с реальными реализациями для всех (ну, может быть, не для всех, но для многих) функций, которые находятся в электронной таблице. К сожалению, просматривая javadoc, я не смог найти ничего похожего на интерфейс / классы.

  • Существуют ли какие-либо другие библиотеки, которые могут помочь в математике для ячеек poi excel, используя что-то с большей точностью, чем double?
  • лучшее, что я могу сказать, это использовать Apache Commons Math?
  • Похоже, что связанные с числом функции в org.apache.poi.hssf.record.formula.functions. * Работают только с удвоениями.

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Формат Excel хранит все числа внутри как двойные.Таким образом, хотя вы можете потенциально рассчитать ответы с более высокой точностью, если вы сохраните их обратно в файл Excel, вы потеряете их.Кроме того, если у вас получится использовать Excel для вычисления самого значения, то ответ, который он сохранит, будет ограничен двойной точностью.

Если вы хотите выполнить оценку формулы с помощью POI, она в основном настроена вокруг оценки содержимогоклетка.Один из вариантов - создать ячейку, ввести в нее свою формулу и затем выполнить оценку. Подробнее см. Документацию Apache POI eval .

Пакет org.apache.poi.ss.formula.functions содержит все реализации функций формулы Excel, которые поддерживает POI, но они могут быть для вас немного низкими (они работаютна Ptgs, Ops и т. д.)

1 голос
/ 17 марта 2011

Да, Энди Кхан JExcel может работать с формулами .

...