Java BigDecimal vs R vs Java Float, Double
Java BigDecimal vs R vs Java Float, Double
我正在开发一个金融系统,其精度要求仅为小数点后 6 位。我们目前正在使用 R,但正在转换为 Java。我和一位同事争论过我们是应该在 Java 中使用 BigDecimals 还是 double / float primitive。我赞成 BigDecimal,但他的观点是 R 将使用与 Java 原语相同的原语,因此我们已经注意到是否存在任何精度问题。应该注意的是,我们将转换为 BigDecimal 的最终结果无论如何这只是为了计算本身。谁是正确的?
您绝对应该将 BigDecimal 与 DECIMAL 128 一起使用。您应该知道规格将来可能会发生变化并且可能需要更多的小数点。 DECIMAL 128 是太多的解决方案,但它是防弹的。
性能很重要,但说到钱,准确性更为重要。
准确性
会计师需要准确性。他们不关心执行速度。出于会计目的,请始终在 Java 中使用 BigDecimal
。
另一种方法是使用整数。如果您想用美元 (USD) 表示便士,请乘以一百,然后用该整数做进一步的数学运算。 BigInteger
可能会有帮助。
速度
统计学家要的是执行速度。他们不关心minor inaccuracies. For such work, floating-point in R有没有道理。
导出
我正在开发一个金融系统,其精度要求仅为小数点后 6 位。我们目前正在使用 R,但正在转换为 Java。我和一位同事争论过我们是应该在 Java 中使用 BigDecimals 还是 double / float primitive。我赞成 BigDecimal,但他的观点是 R 将使用与 Java 原语相同的原语,因此我们已经注意到是否存在任何精度问题。应该注意的是,我们将转换为 BigDecimal 的最终结果无论如何这只是为了计算本身。谁是正确的?
您绝对应该将 BigDecimal 与 DECIMAL 128 一起使用。您应该知道规格将来可能会发生变化并且可能需要更多的小数点。 DECIMAL 128 是太多的解决方案,但它是防弹的。
性能很重要,但说到钱,准确性更为重要。
准确性
会计师需要准确性。他们不关心执行速度。出于会计目的,请始终在 Java 中使用 BigDecimal
。
另一种方法是使用整数。如果您想用美元 (USD) 表示便士,请乘以一百,然后用该整数做进一步的数学运算。 BigInteger
可能会有帮助。
速度
统计学家要的是执行速度。他们不关心minor inaccuracies. For such work, floating-point in R有没有道理。
导出