以前经常碰到的使用场景是科学计数法转浮点数,但是最近有个特殊需求,反过来来了,要求将普通数字转换为科学计数法,且保留两位小数。本以为前辈们应该留下解决方案了,但是找了好久没找到具体的实现,于是乎参考了几个前辈对格式化方面的研究成果,自己使用笨办法拼凑了处理了一下,勉强算是解决了问题,在此做个记录,一方面方便自己以后查阅,另一方面希望能够帮到遇到同样问题的小伙伴,至少也是个解决方案。当然只是个人见解,还望大神勿喷~~~如果您有更好的解决方案,欢迎指正!好了,直接贴代码:
public static void main(String[] args) {
double a = -0.23153384615;
System.out.println(Test.double2ScientificNotation(a));//输出结果 -2.32E-1
}
public static String double2ScientificNotation(double num){
String str = String.format("%E", num);//获取直接格式化结果
str = str.replace("E-0", "E-");//将E-0N处理为E-N
//处理结果
String temp = str.substring(0,str.indexOf(".")+4);//前4位
//精确到小数点后两位
String f = String.format("%.2f", Double.parseDouble(temp));
str = f+str.substring(str.indexOf("E"));
return str;
}