首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用BigDecimal还是double?

我应该使用BigDecimal还是double?
EN

Stack Overflow用户
提问于 2016-03-10 07:04:34
回答 2查看 4.3K关注 0票数 0

我必须在我的代码中计算一个相当复杂的公式,我想知道如何决定我应该使用BigDecimal还是只使用double来计算。

该函数为:

代码语言:javascript
复制
f(x) = 1.03^(4 - ((1/3) * (x-9)^2))

其中x是双四舍五入到4个小数点,例如1.2345

使用BigDecimaldouble的优缺点是什么?如果我使用double来表示所有的东西,我可能会失去多少精度?

EN

回答 2

Stack Overflow用户

发布于 2016-03-10 17:27:58

使用BigDecimal胜过double的主要优点是,第一个可以在固定的小数位数上实现更高的精度。主要的缺点是BigDecimal需要更多的cpu操作才能进行相同的计算。

关于两者的精确度,如果你以旧的货币价值为例(我来自欧洲,然后是欧元),你可以立即看到,当最小单位是0.01欧元时,0,009欧元或更少是没有任何意义的。这是一个固定的精度值,BigDecimal可以很好地管理它。

如果你的问题的计算是关于需要足够好的精度(或者像Jonah所说的平均好的精度)的东西,并且没有定义好的最小单位,那么可以是一个浮点值。

票数 1
EN

Stack Overflow用户

发布于 2016-03-10 07:22:23

一个double平均可以准确地存储16个有效数字。我不认为在该公式中使用double会导致显著的数据丢失。但是,如果速度根本不是问题,那么使用BigDecimal将是我的选择。请参阅How many significant digits have floats and doubles in java?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35904447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档