最初我追求的是比简单的 +-*/功能更多的 BigDecimal,它比 java.lang.Math 上可用的功能少得多。
请不要评论 sin 和产生或需要不适合的无理数的类似函数。该问题的简单答案是使用具有适当/合理精度限制的 MathContext。我最初只选择了 BigDecimal,因为它提供了比 double 更多的精度。
我的一个想法是利用 Apache Poi 库,希望它包含一个有效的 Function 接口(interface),并为电子表格中的所有(也许不是全部,但有很多)函数提供了真正的实现。不幸的是浏览 javadoc 我找不到任何类似命名的接口(interface)/类。
- 是否有任何其他库可以帮助使用比 double 更精确的东西对 poi excel 单元格进行数学运算?
- 我能说的最好的就是利用 apache commons 数学?
- 看来 org.apache.poi.hssf.record.formula.functions.* 中与数字相关的函数仅适用于 double 。
最佳答案
Excel 格式在内部将所有数字存储为 double 型。因此,虽然您可能会计算出更高精度的答案,但如果您将它们存储回 Excel 文件中,您就会失去它。此外,如果您使用 excel 来计算值本身,那么它保存的答案将仅限于 double 。
如果您想使用 POI 进行公式评估,则主要是围绕评估单元格的内容进行设置。一种选择是创建一个单元格,将公式设置到其中然后进行计算。 See the Apache POI eval documentation了解详情。
org.apache.poi.ss.formula.functions
包包含 POI 支持的所有 excel 公式函数实现,但它们对您来说可能有点低级(它们适用于 Ptgs,操作等)
关于java - Apache POI Spreadsheets 是否有任何库来处理比 double 更精确的公式的 r/wing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5334083/