浮点数(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