将一个大数转为科学计数法并保留两位小数打印

博客介绍了在Java中实现将大数转为科学计数法并保留两位小数打印的方法。借助printf方法,参考JDK源码util包下的Formatter类,介绍了常用进制转换参数,还说明了Double类型在特定范围外会用科学计数法表示,并给出测试用例。

实现:将一个大数转为科学计数法并保留两位小数打印

BigInteger scienceNum = new BigInteger("12345678901234567890");
System.out.printf("%.2e",scienceNum.doubleValue());
/** 打印结果:
1.23e+19
*/

这里借用到了printf这个方法,参考JKD源码util包下的Formatter类,可以看到如下几个参数的介绍。
格式化

对于上面的参数,我重点圈出两部分。

第一部分:

o => 八进制

d => 十进制

x/X => 十六进制

这三个都是常用的,使用方法都是调用printf方法,然后第一个参数是"%*",第二个参数是要转化的数

System.out.printf("%o",8);
System.out.println();
System.out.printf("%d",10);
System.out.println();
System.out.printf("%x",16);
System.out.println();
/** 打印结果:
10
10
10
*/

第二部分:

接下来看一下 e/E 这个参数的具体用法。

Java语言的Double类型(注意是包装类型,而不是基本数据类型),在(10^-3, 10^7]范围内是正常表示,超出这个范围后,就会转为科学技术法表示.有些时候,并不想要科学计数法。鉴于此,看过源码后我设计了如下测试用例,大家可以自行理解一下。

Double smallDouble = 0.0001; // 小于10^-3
Double bigDouble = 12345678.00; // 大于等于 10^7
System.out.println("-----------smallDouble-------------");
System.out.println("正常打印:\n"+smallDouble);
System.out.println("toString打印:\n"+smallDouble.toString());
System.out.println("科学计数法保留两位小数打印:");
System.out.printf("%.2e",smallDouble);
System.out.println();
System.out.println("对小于10^-3的还原打印:");
System.out.printf("%.1g",smallDouble);

System.out.println();
System.out.println("-----------bigDouble-------------");
System.out.println("正常打印:\n"+bigDouble);
System.out.println("toString打印:\n"+bigDouble.toString());
System.out.println("科学计数法保留两位小数打印:");
System.out.printf("%.2e",bigDouble);
System.out.println();
System.out.println("对大于等于10^7的还原打印:");
System.out.printf("%.10g",bigDouble);

/** 打印结果如下:
-----------smallDouble-------------
正常打印:
1.0E-4
toString打印:
1.0E-4
科学计数法保留两位小数打印:
1.00e-04
对小于10^-3的还原打印:
0.0001
-----------bigDouble-------------
正常打印:
1.2345678E7
toString打印:
1.2345678E7
科学计数法保留两位小数打印:
1.23e+07
对大于等于10^7的还原打印:
12345678.00
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值