双对大十世摩?

双对大十世摩?

我必须计算一些浮点变量,我的同事建议我使用BigDecimal而不是double因为它会更精确。但我想知道这是什么以及如何最大限度地利用BigDecimal?


眼眸繁星
浏览 372回答 3
3回答

慕桂英546537

A BigDecimal是表示数字的精确方法。一个Double有一定的精确度。与不同大小的双倍一起工作(比方说)d1=1000.0和d2=0.001)可能导致0.001当相加时,星等的差异是如此之大。带着BigDecimal这是不可能的。缺点BigDecimal是因为速度慢了,用这种方式编程算法有点困难(原因是+ - *和/没有超载)。如果你正在处理金钱,或者精确是必须的,请使用BigDecimal..不然的话Doubles倾向于足够好。我建议你读一下javadoc的BigDecimal就像他们比我在这里更好地解释事情一样:)

繁星淼淼

我的英语不好,所以我只写一个简单的例子。    double a = 0.02;     double b = 0.03;     double c = b - a;     System.out.println(c);     BigDecimal _a = new BigDecimal("0.02");     BigDecimal _b = new BigDecimal("0.03");     BigDecimal _c = _b.subtract(_a);     System.out.println(_c);程序输出:0.0099999999999999980.01有人还想用双倍?)

大话西游666

有两个主要区别与双重:任意精度,类似于BigInteger,它们可以包含任意精度和大小的数量基10而不是基2,BigDecimal是n*10^刻度,其中n是任意大有符号整数,小数位数可以认为是小数点向左或向右移动的数字数。您应该使用BigDecimal进行货币计算的原因不是它可以表示任何数字,而是它可以表示所有可以用十进制概念表示的数字,并且几乎包括货币世界中的所有数字(您永远不会将1/3$传递给某人)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java