目录
?1.Integer
2.Double
3.自动装箱和自动拆箱
4.BigDecimal 常用来解决精确地浮点数运算不精确地问题
5.舍入方式
?1.Integer
1.创建对象 ? ? ? ? new Integer(1); ? ? ? ? Integer.valueOf(1); Integer类中包含256个缓冲对象,范围-128-127 使用valueOf()时,如果是指定范围的值,直接访问缓存对象不新建,如果指定范围外的值,直接新建对象
常见方法:[static int] parseInt(String s) 将字符串参数作为有符号的十进制整数进行解析
2.Double
1.创建对象 ? ? ? ? new Double(3.14); ? ? ? ? Double.valueOf(3.14); 两种没区别
常见方法:Double.parseDouble();
System.out.println(i1.parseInt("800")+8);//808->int+int
System.out.println(d1.parseDouble("2.2")+3.1);//5.300000000000001->double+double
3.自动装箱和自动拆箱
1.自动装箱:把基本类型包装成对应的包装类型的过程 Integer a=5? a是引用类型,引用了包装对象的地址 编译器会完成对象的自动装箱: Integer a=Integer.valueOf(5);
2.自动拆箱:从包装类型的值,自动变成基本类型的值 int i=a;? a现在是包装类型,没法给变量赋值,需要把5取出来 编译器会完成自动拆箱:int i=a.intValue();
4.BigDecimal 常用来解决精确地浮点数运算不精确地问题
1.创建对象 ? ?BigDecimal(double val) ? ? ? ? 将double转换为BigDecimal,后者是double的二进制浮点值十进制表示形式。 ? ? ? ? 还会出现不精确地问题
? ?BigDecimal(String val) ? ? ? ? 将String类型字符串的形式转换为BigDecimal
2.常用方法
Add(BigDecimal bd) : 做加法运算 Subtract(BigDecimal bd) : 做减法运算 Multiply(BigDecimal bd) : 做乘法运算 Divide(BigDecimal bd) : 做除法运算,除不尽时会抛异常 Divide(BigDecimal bd,保留位数,舍入方式) : 除不尽时使用 setScale(保留位数,舍入方式) : 同上 pow(int n) : 求数据的几次幂
//2.创建工具类对象,把基本类型a和b交给工具类对象BigDecimal来保存
/*1.最好不要用double作为构造函数的参数,不然还会有不精确的现象*/
/*2.最好使用重载的,参数类型是String的构造函数
* double转String,直接拼个空串就可以*/
BigDecimal bd1 = new BigDecimal(a+"");
BigDecimal bd2 = new BigDecimal(b+"");
BigDecimal bd3;
//3.2 Add(BigDecimal bd) : 做加法运算
bd3 = bd1.add(bd2);
System.out.println(bd3);
//3.3 Subtract(BigDecimal bd) : 做减法运算
bd3 = bd1.subtract(bd2);
System.out.println(bd3);
//3.4 Multiply(BigDecimal bd) : 做乘法运算
bd3 = bd1.multiply(bd2);
System.out.println(bd3);
//3.5 Divide(BigDecimal bd) : 做除法运算,除不尽时会抛异常
/*3.除法运算,除不尽时会抛出异常ArithmeticException*/
//方案一:(除不尽时有问题)
//bd3 = bd1.divide(bd2);
/*divide(m,n,o)
m是要除以哪个对象,n指要保留几位,o指舍入方式(比如四舍五入)*/
//方案二:
bd3 = bd1.divide(bd2,3,BigDecimal.ROUND_HALF_UP);
System.out.println(bd3);
5.舍入方式
ROUND_HALF_UP 四舍五入,五入 如:4.4结果是4; 4.5结果是5 ROUND_HALF_DOWN 五舍六入,五不入 如:4.5结果是4; 4.6结果是5 ROUND_HALF_EVEN 公平舍入(银行常用) 比如:在5和6之间,靠近5就舍弃成5,靠近6就进位成6,如果是5.5,就找偶数,变成6 ROUND_UP 直接进位,不算0.1还是0.9,都进位 ROUND_DOWN 直接舍弃,不算0.1还是0.9,都舍弃 ROUND_CEILING(天花板) 向上取整,取实际值的大值 朝正无穷方向round 如果为正数,行为和round_up一样,如果为负数,行为和round_down一样 ROUND_FLOOR(地板) 向下取整,取实际值的小值 朝负无穷方向round 如果为正数,行为和round_down一样,如果为负数,行为和round_up一样
|