字符串与数字之间的转换及常用BigDecimal使用

一、数字与字符串的互转

1、通过ToString() 方法, Double 就是一个包装类,String s1 = Double.toString(num);

Integer同理

2、通过valueof() 方法, 本质上还是调用 toString() 方法,String s2 = String.valueOf(num);

3、技巧性,第三种没有借助包装类 String s3 =“”+num;

二、字符串转数字

string 和int之间的转换

string转换成int :Integer.valueOf(“12”) 或者Integer.PaseInt(“12”)

三、 char和int之间的转换

首先将char转换成string

String str=String.valueOf(‘2’)

Integer.valueof(str) 或者Integer.parseInt(str)

Integer.valueof返回的是Integer对象,Integer.parseInt返回的是int

四、Bigdecimal的使用情况

BigDecimal 加法运算——add()方法
1、Int 类型

BigDecimal bigInt1 = new BigDecimal(6);
BigDecimal bigInt2= new BigDecimal(8);
BigDecimal intSum = new BigDecimal(0);
//BigDecimal求和
intSum = bigInt1 .add(bigInt2);
System.out.println("和 :" +intSum);

//打印输出
和 :14
2、double 类型

BigDecimal bigDouble1= new BigDecimal(6.6);
BigDecimal bigDouble2= new BigDecimal(8.8);
BigDecimal doubleSum = new BigDecimal(0);
//BigDecimal求和
doubleSum = bigDouble1.add(bigDouble2);
System.out.println("和:" + doubleSum );
//打印输出:15.4000000000000003552713678800500929355621337890625

double不能表示为任何有限长度的二进制小数,所以会出现丢失精度问题,官方文档中建议使用字符串形式,这样不会丢失精度。
3、String类型

BigDecimal bigString1 = new BigDecimal("6.6");
		BigDecimal bigString2 = new BigDecimal("8.8");
		BigDecimal stringSum = new BigDecimal(0);
		//BigDecimal求和
		stringSum= bigString1.add(bigString2);
		System.out.println("和 :" +stringSum);
		//打印输出:15.4

BigDecimal 加法运算——add()方法、减法运算——subtract()方法、乘法运算——multiply()方法、除法运算——divide()方法,同理使用,但是最好使用String避免丢失精度。

关于BigDecimal.setScale方法—— 处理小数

1.BigDecimal.ROUND_UP 进位处理

		BigDecimal test= new BigDecimal(6.51);
		//表示保留一位小数,只要第二位小数不为0都进1
		System.out.println(test.setScale(1,BigDecimal.ROUND_UP));
		-----------------------------------------
		输出:6.6
	
		BigDecimal test= new BigDecimal(6.50);
		//表示保留一位小数,只要第二位小数不为0都进1
		System.out.println(test.setScale(1,BigDecimal.ROUND_UP));
		-----------------------------------------
		输出:6.5

2.BigDecimal.ROUND_HALF_UP 四舍五入

BigDecimal test= new BigDecimal(6.55);
	//四舍五入
	System.out.println(test.setScale(1,BigDecimal.ROUND_HALF_UP));
	-----------------------------------------
	输出:6.6

3.BigDecimal.ROUND_DOWN直接删除多余的小数位

BigDecimal test= new BigDecimal(6.59);
	//直接删除多余的小数位
	System.out.println(test.setScale(1,BigDecimal.ROUND_DOWN));
	-----------------------------------------
	输出:6.5

你可能感兴趣的:(java)