gpt4 book ai didi

java - Java 中的货币精度(不是 BigDecimal)

转载 作者:行者123 更新时间:2023-12-01 07:57:22 26 4
gpt4 key购买 nike

我们知道,在需要正确精度的情况下,使用 float 或 double 并不是最佳选择,并且我们知道 BigDecimal 可以实现此目的,但我们也知道它比常规基元运算慢大约 100 倍。

现在,如果速度对我们至关重要并且我们确实需要精度,我们该怎么办?

我尝试以最慢的单位存储货币值(value),并将其转换存储为 1 BTC = 100000000 聪,但经过几次实验后很明显,你根本无法长期存储 100BTC,超过了最大可能值。是的,可以选择牺牲精度,例如存储 microBTC 等,但问题更加全局化,我们如何用原语设计这样的东西?

最佳答案

正如 D.E.Knuth 在他的《计算机编程艺术》第二卷中详细记录的那样,以任意精度实现算术并不是“黑术” - 请参阅“半数值算法”一章。我已经经历过这个过程,遵循实现 COBOL 计算的必要性(因此:不仅仅是整数)。

此外,可以选择类似 BigInteger 或 BigDecimal 的方式,而无需为每个新操作结果重新创建对象。是的,这意味着工作,但如果你真的认为你需要它......

我发现 BigInteger 就算术而言并没有那么慢。对我来说,真正阻碍我使用它的是需要频繁地在二进制和十进制(十进制数字数组)之间进行转换。

关于java - Java 中的货币精度(不是 BigDecimal),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com