将Excel中读取的科学计数法表示的Double数据转换为对应的字符串

  已在SegmentFault提问,目前没有答案,自行实现如下:

 1 private static String getRealNumOfScientificNotation(String doubleStr) {
 2         int indexOfE = doubleStr.indexOf('E');
 3         int indexOfPoint = doubleStr.indexOf('.');
 4         // 整数部分
 5         BigInteger zs = new BigInteger(doubleStr.substring(0, indexOfPoint));
 6         // 小数部分
 7         BigInteger xs = new BigInteger(doubleStr.substring(indexOfPoint
 8                 + BigInteger.ONE.intValue(), indexOfE));
 9         // 指数
10         int pow = Integer.valueOf(doubleStr.substring(indexOfE
11                 + BigInteger.ONE.intValue()));
12         StringBuffer buffer = new StringBuffer();
13         // e.g. 1.23E-5
14         if (pow < 0) {
15             for (int i = 0; i < -pow; i++) {
16                 buffer.append(0);
17             }
18             buffer.insert(BigInteger.ONE.intValue(), ".");
19             buffer.append(zs.toString()).append(xs.toString());
20             doubleStr = buffer.toString();
21         } else {
22             int xsLen = xs.toByteArray().length;
23             int needFill0 = pow - xsLen;
24             if (needFill0 < 0) {
25                 // e.g. 1.234E2
26                 buffer.append(xs);
27                 buffer.insert(pow, ".");
28                 buffer.insert(0, zs);
29                 doubleStr = buffer.toString();
30             } else {
31                 // e.g. 1.234E6 or 1.234E3
32                 for (int i = 0; i < needFill0; i++) {
33                     buffer.append(0);
34                 }
35                 buffer.insert(0, xs);
36                 buffer.insert(0, zs);
37                 doubleStr = buffer.toString();
38             }
39         }
40         return doubleStr;
41     }

 

转载于:https://www.cnblogs.com/yw0219/p/6613948.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值