关于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

经验分享 程序员 微信小程序 职场和发展