java中科学计数法转字符串与科学计数法类型的字符串转数字问题

背景

       最近开发的过程中遇到一个很疑惑的问题,处理一些数据中,部分数据变成了科学计数法的形式保存到了数据库,很是头疼。最后发现是因为当数字达到一定精度,再转变为字符串的时候就会变成科学计数法的形式。

案例测试

       比如如下代码的测试

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Double num1 = 0.0000009;
		Double num2 = 0.09;
		System.out.println("num1转字符串:"+num1);
		System.out.println("num2转字符串:"+num2);
		System.out.println("num1转字符串:"+String.valueOf(num1));
		System.out.println("num2转字符串:"+String.valueOf(num1));
	}

}

输出结果如下

这是因为System.out.println本身就会将要输出的对象强转为字符串,于是就会有第一个输出结果;

接下来就涉及到了我们的问题,科学计数法怎么转为字符串?

科学计数法怎么转为字符串

测试代码如下

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BigDecimal bd = new BigDecimal("9.0E-7");
		String str = bd.toPlainString();
		System.out.println(str);
	}

}

测试结果如下

如何判别字符串属于科学计数法的形式?

代码如下

public class Test {

	public static void main(String[] args) {
		String str = "6.0E-4";
		String regx = "[+-]*\\d+\\.?\\d*[Ee]*[+-]*\\d+";
		Pattern pattern = Pattern.compile(regx);
		boolean isNumber = pattern.matcher(str).matches();
		if (isNumber) {
			BigDecimal bd = new BigDecimal(str);
			String num = bd.toPlainString();
			System.out.println(num);
		}
	}

}

 

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值