BigDecimal的一些用法

1、BigDecimal(String val)和BigDecimal(double val)的精度问题。

public class BigDecimalTest01 {
    public static void main(String[] args) {
        BigDecimal big = new BigDecimal(0.1);

        System.out.println("BigDecimal创建的double值为"+big);

        BigDecimal big2 = new BigDecimal("0.1");

        System.out.println("BigDecimal创建的String值为"+big2);
    }
}

BigDecimal创建的double值为0.1000000000000000055511151231257827021181583404541015625
BigDecimal创建的String值为0.1
0.1无法准确的表示为double,所以传到构造方法的值不会正好是0.1,表示准确预期数字时,建议使用String构造方法。

若必须传入double类型的数值时,先使用Double.toString(double)方法,再使用BigDecimal(String)构造方法。转换为String传入。

2、BigDecimal比较大小

利用BigDecimal中的compareTo()方法,返回1表示大于,返回0表示相等,返回-1表示小于

BigDecimal big3 = new BigDecimal("0.2");

System.out.println(big3.compareTo(big2));

输出为1,表示当前数大于传过去的数。

3、常用的方法:

add(BigDecimal augend)加

subtract(BigDecimal subtrahend)减

multiply(BigDecimal multiplicand)乘

divide(BigDecimal divisor)除

doubleValue()
          将此 BigDecimal 转换为 double。

floatValue()
          将此 BigDecimal 转换为 float。

longValue()
          将此 BigDecimal 转换为 long。

intValue()
          将此 BigDecimal 转换为 int。

4、BigDecimal的一些静态方法,

static intROUND_CEILING
          接近正无穷大的舍入模式。
static intROUND_DOWN
          接近零的舍入模式。
static intROUND_FLOOR
          接近负无穷大的舍入模式。
static intROUND_HALF_DOWN
          向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
static intROUND_HALF_EVEN
          向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
static intROUND_HALF_UP
          向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。
static intROUND_UNNECESSARY
          请求的操作具有精确的结果,因此不需要舍入。

5、BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。

6、注意:BigDecimal都是不可变的,在进行每一次四则运算的时候,都会产生一个新的对象,记得保存四则运算后的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值