我必须计算一些浮点变量,我的同事建议我使用BigDecimal而不是double因为它会更精确.但我想知道它是什么以及如何最大限度地利用它BigDecimal?
我知道这个问题已经多次讨论过,但我对答案并不完全满意.请不要回答"双打不准确,你不能代表0.1!你必须使用BigDecimal"......
基本上我正在做一个财务软件,我们需要在内存中存储很多价格.BigDecimal太大了,无法容纳缓存,因此我们决定切换到double.到目前为止,我们没有因为正当理由而遇到任何错误,我们需要12位数的准确度.12位数的估计基于这样一个事实:即使我们以百万谈话,我们仍然能够处理美分.
double给出15位有效十进制数字精度.如果你在显示/比较它们时绕过你的双打,会出现什么问题?
我猜问题是不准确的积累,但有多糟糕呢?在它影响第12位之前需要多少次操作?
你看到双打的其他问题吗?
编辑:关于很久,这绝对是我们所想到的.我们正在做很多除法乘法,长期不会很好地处理(丢失小数和溢出),或者至少你必须非常小心你所做的.我的问题更多的是关于双打理论,基本上有多糟糕,是否可以接受不准确?
编辑2:不要试图解决我的软件,我不准确:).我重新提出这样一个问题:如果你只需要12个数字并且在显示/比较时你是否会翻倍,那么不准确的可能性有多大?