为了能精确表示、计算浮点数,Java提供了BigDecimal类,该类提供了大量的构造器,用于创建BigDecimal对象,包括把所有的基本数值型变量转换成一个BigDecimal对象,也包括利用数字字符串、数字字符数组来创建BigDecimal对象。
以下为一些常用构造器:
// 构造器,BigDecimal的构造器很多
System.out.println("---------常用构造器----------");
// 1、参数为int类型
BigDecimal decimal = new BigDecimal(6);
System.out.println("参数为int类型的 :bigDecimal1 = " + decimal);
// 2、参数为char数组类型
BigDecimal bigDecimal2 = new BigDecimal(new char[] { '6', '6' });
System.out.println("参数char数组的 :bigDecimal2 = " + bigDecimal2);
// 3、参数为double类型
BigDecimal bigDecimal3 = new BigDecimal(666.0);
System.out.println("参数double类型的 :bigDecimal3 = " + bigDecimal3);
// 4、参数为long类型
BigDecimal bigDecimal4 = new BigDecimal(6666L);
System.out.println("参数为long类型的 :bigDecimal4 = " + bigDecimal4);
// 5、参数为字符类型
BigDecimal bigDecimal5 = new BigDecimal("66666");
System.out.println("参数为字符类型的 :bigDecimal5 = " + bigDecimal5);
// valueOf
System.out.println("------valueOf----------");
BigDecimal bigDecimal6 = BigDecimal.valueOf(66.6);
BigDecimal bigDecimal7 = BigDecimal.valueOf(666L);
System.out.println("bigDecimal6=" + bigDecimal6);
System.out.println("bigDecimal7=" + bigDecimal7);
输出结果如下:
在把浮点型数据转为BigDecimal时不建议使用构造器的方式,因为使用构造器可能会导致精度损失,推荐使用 valueOf()方法或者使用形参为字符串的构造器。
BigDecimal bigDecimal3 = new BigDecimal(6.66);
System.out.println("参数为double类型的构造器 : " + bigDecimal3);
BigDecimal bigDecimal3 = new BigDecimal("6.66");
System.out.println("参数为String类型的构造器 : " + bigDecimal3);
BigDecimal bigDecimal3 = BigDecimal.valueOf(6.66);
System.out.println("BigDecimal.valueOf : " + bigDecimal3);
输出结果如下:
//运算
System.out.println("---abs()绝对值 -------------");
System.out.println("bigDecimal6.abs()=" + bigDecimal6.abs());
System.out.println("--- 加+ 、减- 、乘* 、除/ 、次方^ ------------");
System.out.println("bigDecimal6 + bigDecimal7 = " + bigDecimal6.add(bigDecimal7));
System.out.println("bigDecimal6 - bigDecimal7 = " + bigDecimal6.subtract(bigDecimal7));
System.out.println("bigDecimal6 * bigDecimal7 = " + bigDecimal6.multiply(bigDecimal7));
System.out.println("bigDecimal6 / bigDecimal7 = " + bigDecimal6.divide(bigDecimal7));
System.out.println("bigDecimal6^3="+bigDecimal6.pow(3));
//比较 int c = a.compareTo(b); 若 c>0 则 a>b , c<0 则a<b ,c = 0 则a=b
System.out.println("-----------compareTo-----------");
System.out.println("bigDecimal6.compareTo(bigDecimal7) ="+bigDecimal6.compareTo(bigDecimal7));