gpt4 book ai didi

Java:为什么在现实世界中我们应该使用 BigDecimal 而不是 Double?

转载 作者:IT老高 更新时间:2023-10-28 20:31:06 29 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Double vs. BigDecimal?

(6 个回答)


6年前关闭。




在处理现实世界的货币值(value)时,建议我使用 BigDecimal 而不是 Double。但我没有得到令人信服的解释,除了“通常是这样做的”。

你能解释一下这个问题吗?

最佳答案

这称为精度损失,在处理非常大的数字或非常小的数字时非常明显。带基数的十进制数的二进制表示在许多情况下是近似值而不是绝对值。要了解为什么需要阅读二进制浮点数表示。这是一个链接:http://en.wikipedia.org/wiki/IEEE_754-2008 .这是一个快速演示:
在精度 = 10 的 bc(一种任意精度计算器语言)中:
(1/3+1/12+1/8+1/15) = 0.6083333332
(1/3+1/12+1/8) = 0.5416666666666666
(1/3+1/12) = 0.416666666666666
Java双:
0.6083333333333333
0.5416666666666666
0.416666666666666663
Java浮点数:
0.60833335
0.5416667
0.4166667

如果您是一家银行,并且每天要负责数千笔交易,即使它们不是来自同一个账户(或者可能是),您也必须拥有可靠的数字。二进制浮点数不可靠 - 除非您了解它们的工作原理及其局限性。

关于Java:为什么在现实世界中我们应该使用 BigDecimal 而不是 Double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320209/

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