我想知道BigDecimal和double之间的确切区别。我知道BigDecimal比double更精确,你应该使用前者来计算。
为什么它更精确?为什么不能像BigDecimal一样定制double呢?或者,使用double进行计算有什么好处吗
发布于 2013-06-20 17:09:53
double是一种非常快速的浮点数据类型,在许多芯片组上以非常低的级别实现。
它的精确度足以满足许多应用:例如,测量太阳到冥王星的距离到最近的厘米!
在考虑迁移到更精确的数据类型时,总是要权衡性能,因为后者会慢得多,而且您最喜欢的数学库可能不支持它们。请记住,程序的输出是输入质量的函数。
最后一句话,千万不要用双精度来表示现金数量!
发布于 2013-06-20 17:07:22
BigDecimal
不变的、任意精度的有符号十进制数。BigDecimal由任意精度的整数、未缩放值和32位整数小数位数组成。如果为零或正数,则小数位数为小数点右侧的位数。如果为负数,则将该数字的未缩放值乘以10,为该刻度的负幂。因此,BigDecimal表示的数字的值是(unscaledValue×10-scale)。
Double具有一定的精度。
编辑: BigDecimal是一个真实的对象,而不是一个原始对象。因此,它抽象了数字表示,并且不受物理(读内存)限制。礼节:
发布于 2013-06-20 17:12:24
double有8个字节来表示值,其精度限制在15位十进制数字,参见http://en.wikipedia.org/wiki/IEEE_754-1985。BigDecimal精度实际上是无限的,因为它基于任意长度的整数数组。尽管使用double的操作比使用BigDecimal快得多,但是这种数据类型不应该用于精确的值,例如货币。
https://stackoverflow.com/questions/17209539
复制相似问题