首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么BigDecimal比double更精确?

为什么BigDecimal比double更精确?
EN

Stack Overflow用户
提问于 2013-06-20 17:04:56
回答 7查看 2.2K关注 0票数 1

我想知道BigDecimaldouble之间的确切区别。我知道BigDecimaldouble更精确,你应该使用前者来计算。

为什么它更精确?为什么不能像BigDecimal一样定制double呢?或者,使用double进行计算有什么好处吗

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-06-20 17:09:53

double是一种非常快速的浮点数据类型,在许多芯片组上以非常低的级别实现。

它的精确度足以满足许多应用:例如,测量太阳到冥王星的距离到最近的厘米!

在考虑迁移到更精确的数据类型时,总是要权衡性能,因为后者会慢得多,而且您最喜欢的数学库可能不支持它们。请记住,程序的输出是输入质量的函数。

最后一句话,千万不要用双精度来表示现金数量!

票数 3
EN

Stack Overflow用户

发布于 2013-06-20 17:07:22

BigDecimal

不变的、任意精度的有符号十进制数。BigDecimal由任意精度的整数、未缩放值和32位整数小数位数组成。如果为零或正数,则小数位数为小数点右侧的位数。如果为负数,则将该数字的未缩放值乘以10,为该刻度的负幂。因此,BigDecimal表示的数字的值是(unscaledValue×10-scale)。

Double具有一定的精度。

编辑: BigDecimal是一个真实的对象,而不是一个原始对象。因此,它抽象了数字表示,并且不受物理(读内存)限制。礼节:

票数 5
EN

Stack Overflow用户

发布于 2013-06-20 17:12:24

double有8个字节来表示值,其精度限制在15位十进制数字,参见http://en.wikipedia.org/wiki/IEEE_754-1985。BigDecimal精度实际上是无限的,因为它基于任意长度的整数数组。尽管使用double的操作比使用BigDecimal快得多,但是这种数据类型不应该用于精确的值,例如货币。

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

https://stackoverflow.com/questions/17209539

复制
相关文章

相似问题

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