java divide 用法_JAVA BigDecimal 用法

一、BigDecimal 的加减乘除

BigDecimal bignum1 = new BigDecimal("10");

BigDecimal bignum2 = new BigDecimal("5");

BigDecimal bignum3 = null;

//加法

bignum3 = bignum1.add(bignum2);

System.out.println("和 是:" + bignum3);

//减法

bignum3 = bignum1.subtract(bignum2);

System.out.println("差 是:" + bignum3);

//乘法

bignum3 = bignum1.multiply(bignum2);

System.out.println("积 是:" + bignum3);

//除法

bignum3 = bignum1.divide(bignum2);

System.out.println("商 是:" + bignum3);

运行结果为:

ec2b0d1c15ef21138b99776652937e96.png

二、BigDecimal 的比较大小。

BigDecimal num1 = new BigDecimal("0");

BigDecimal num2 = new BigDecimal("1");

BigDecimal num3 = new BigDecimal("2");

BigDecimal num = new BigDecimal("1"); //用做比较的值

System.out.println(num1.compareTo(num)); //小于 时,返回 -1

System.out.println(num2.compareTo(num)); //等于 时,返回 0

System.out.println(num3.compareTo(num)); //大于 时,返回 1

这是输出结果:

311c684c36882f2dfd5f825f3c6825bb.png

解释下注释里面了。

补充:

BigInteger 也可以存放比较大的数, 和 BigDecimal 的区别是 :BigInteger 存放的是大的整数,而BigDecimal 存放大的小数

继续补充一下,用BigDecimal 写个for循环。

for (BigDecimal i = new BigDecimal("0"); i.compareTo(new BigDecimal("10")) != 1; i = i.add(new BigDecimal("1"))) {

System.out.print(i + "\t");

}

控制台打印的是从0 到 10 。

三、Java中的BigDecimal使用注意事项

1.BigDecial是immutable的,就像String一样,它的所有操作都会生成一个新的对象,所以

amount.add( thisAmount );

是错误的;而应该是:

amount = amount.add( thisAmount );

2. 不要用equals方法来比较BigDecimal对象,因为它的equals方法会比较scale,如果scale不一样,它会返回false;

例如:

BigDecimal a = new BigDecimal("2.00");

BigDecimal b = new BigDecimal("2.0");

print(a.equals(b)); // false

所以你应该使用compareTo()和signum()方法

a.compareTo(b); // returns (-1 if a < b), (0 if a == b), (1 if a > b)

a.signum(); // returns (-1 if a < 0), (0 if a == 0), (1 if a > 0)

3. 使用BigDecimal的字符串构造函数,不要使用double参数的构造函数,否则的话会出现你不想要的结果。

例如下面的代码分别使用double和String的构造函数,然后使用HALF_EVEN的round方法,但是输出结果不一样:

System.out.println("==================");

for(int i = 0; i < 10; i ++) {

StringBuffer sb = new StringBuffer();

sb.append("0.");

sb.append(i);

sb.append("5");

BigDecimal bdx = new BigDecimal(sb.toString());

System.out.println(sb + " " +bdx.setScale(1, RoundingMode.HALF_EVEN));

}

System.out.println("==================");

for(int i = 0; i < 10; i ++) {

StringBuffer sb = new StringBuffer();

sb.append("0.");

sb.append(i);

sb.append("5");

BigDecimal bdx = new BigDecimal(Double.valueOf(sb.toString()));

System.out.println(sb + " " +bdx.setScale(1, RoundingMode.HALF_EVEN));

}

输出是:

==================

0.05 0.0

0.15 0.2

0.25 0.2

0.35 0.4

0.45 0.4

0.55 0.6

0.65 0.6

0.75 0.8

0.85 0.8

0.95 1.0

==================

0.05 0.1

0.15 0.1

0.25 0.2

0.35 0.3

0.45 0.5

0.55 0.6

0.65 0.7

0.75 0.8

0.85 0.8

0.95 0.9

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java BigDecimalJava中用于高精度计算的类。它允许我们进行任意精度的数字计算,而不会出现舍入误差。 在Java中,基本数据类型(如int、double等)的计算是有限制的。例如,double类型只能存储15位有效数字,而且在计算过程中可能会出现舍入误差。这在需要精确计算的场合下是不可接受的,这就需要使用BigDecimal类。 以下是一些Java BigDecimal的常用方法: 1. 实例化BigDecimal对象 可以使用BigDecimal的构造函数来实例化一个对象,例如: ``` BigDecimal num1 = new BigDecimal("1234.5678"); BigDecimal num2 = new BigDecimal(9876.5432); ``` 2. 加法、减法、乘法和除法 可以使用add()、subtract()、multiply()和divide()方法进行加、减、乘和除运算,例如: ``` BigDecimal result1 = num1.add(num2); BigDecimal result2 = num1.subtract(num2); BigDecimal result3 = num1.multiply(num2); BigDecimal result4 = num1.divide(num2, 2, RoundingMode.HALF_UP); // 保留两位小数 ``` 3. 取反、取绝对值、取反余弦等 可以使用negate()、abs()、acos()等方法进行相应的计算,例如: ``` BigDecimal result5 = num1.negate(); // 取反 BigDecimal result6 = num1.abs(); // 取绝对值 BigDecimal result7 = new BigDecimal(Math.PI).acos(); // 取反余弦 ``` 4. 比较大小 可以使用compareTo()方法进行大小比较,例如: ``` int cmp = num1.compareTo(num2); if (cmp > 0) { System.out.println("num1 > num2"); } else if (cmp < 0) { System.out.println("num1 < num2"); } else { System.out.println("num1 = num2"); } ``` 以上是Java BigDecimal的一些常用方法,使用BigDecimal类可以很方便地进行高精度计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值