【发布时间】:2013-04-26 10:23:29
【问题描述】:
我正在尝试对我们在 JAVA+SQL 中有哪些用于精确计算的选项进行简要概述。到目前为止,我找到了以下选项:
- 接受他们的缺点使用双打,不行。
- 使用 BigDecimals
- 在复杂的公式中使用它们对我来说是个问题
- 使用 String.format/Decimal.format 舍入双精度数
- 我需要对公式中的每个变量进行舍入还是只对结果进行舍入以获得 BigDecimal 精度?
- 如何调整?
- 在 SQL 中使用计算字段选项。
- 缺点是我需要动态 SQL 从不同的表中提取数据 + 计算其他计算字段上的字段,这会变得混乱
还有其他选择吗?
问题陈述: 我需要精确的财务计算,这将涉及使用非常大(十亿)和非常小的数字(0.0000004321),并且还要划分彼此非常相似的值,所以我肯定需要 BigDecimal 的精度。
另一方面,我想保留双精度在函数中的易用性(我处理来自十进制 SQL 数据的数组),因此计算如下:(a[i] - b[i])/b[i ] 等等等等,这些都在其他计算中进一步使用。我希望用户能够根据需要设计自己的公式(使用常见的数学语句)
我热衷于对 String.format 使用“格式化”解决方案,但这使得代码的可读性不强(对每个变量使用 String.format()...)。
非常感谢关于如何处理这些东西的建议。
【问题讨论】:
-
这可能会有所帮助...stackoverflow.com/questions/8636228/…
-
你的需求被设计破坏了,回到分析阶段。如果您没有固定的、强制性的和详尽的定义何时以及如何应用舍入,则任何财务数据都会被第一个或第二个使用它的人视为计算错误。
标签: java double precision bigdecimal formulas