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);
		}
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章