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

本文介绍了在Java中如何进行数字与字符串之间的转换,包括使用ToString()、valueOf()方法以及技巧性的转换方式。同时,详细阐述了Bigdecimal的加法运算、减法、乘法、除法,并讨论了使用BigDecimal处理精度问题和不同舍入模式的应用,如ROUND_UP、ROUND_HALF_UP和ROUND_DOWN。
摘要由CSDN通过智能技术生成

一、数字与字符串的互转

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值