关于java中float,double科学计数法问题
浮点数(float,double)整数部分达到8位及以上,会以科学计数法显示;整数(int,long)不会显示成科学计数法;
解决办法:NumberFormat、BigDecimal
例子程序:
public static void main(String[] args) { long l1 = 1234567l; long l2 = 12345678l; long l3 = 123456789l;
double d1 = 1234567.12d; double d2 = 12345678.12d; double d3 = 123456789.12d;
System.out.println("**** long ****"); System.out.println(l1); System.out.println(l2); System.out.println(l3); System.out.println("***** double *****"); System.out.println(d1); System.out.println(d2); System.out.println(d3); System.out.println("***** 处理后 ****"); System.out.println(convert(d2)); System.out.println(convert2(d3));
} //方法一:NumberFormat private static String convert(double d) { NumberFormat nf = NumberFormat.getInstance(); // 是否以逗号隔开, 默认true以逗号隔开,如[123,456,789.36] nf.setGroupingUsed(false); // 结果未做任何处理 return nf.format(d); }
//方法二: BigDecimal private static String convert2(double d) { BigDecimal d1 = new BigDecimal(Double.toString(d)); return d1.toString(); }
输出结果:
**** long *** 1234567 12345678 123456789 **** double ***** 1234567.12 1.234567812E7 1.2345678912E8 ***** 处理后 ***** 12345678.12 123456789.12
