将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 }
God, Grant me the SERENITY, to accept the things I cannot change,
COURAGE to change the things I can, and the WISDOM to know the difference.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix