目录
1.Integer
2.Double
3.自动装箱和自动拆箱
4.BigDecimal 常用来解决精确地浮点数运算不精确地问题
5.舍入方式
1.创建对象
new Integer(1);
Integer.valueOf(1);
Integer类中包含256个缓冲对象,范围-128-127
使用valueOf()时,如果是指定范围的值,直接访问缓存对象不新建,如果指定范围外的值,直接新建对象
常见方法:[static int] parseInt(String s) 将字符串参数作为有符号的十进制整数进行解析
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
1.自动装箱:把基本类型包装成对应的包装类型的过程
Integer a=5 a是引用类型,引用了包装对象的地址
编译器会完成对象的自动装箱: Integer a=Integer.valueOf(5);
2.自动拆箱:从包装类型的值,自动变成基本类型的值
int i=a; a现在是包装类型,没法给变量赋值,需要把5取出来
编译器会完成自动拆箱:int i=a.intValue();
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);
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一样