java - 带有 EX、EEX、EXP 或 EE 科学记数法的字符串要加倍

标签 java scientific-notation

在我的代码中,我从不同来源接收作为字符串的数值。其中一个消息来源正在向我发送这种值:

-6.535402781EX-05

经过几次测试,我知道 EX 格式不是由 Double.valueOf() 方法处理的。抛出 NumberFormatException

我找到了简单的解决方法:

 String val = "-6.535402781EX-05".replace("X", ""); 

实际上它正在工作,但我不确定这是否是最好的解决方案。我还看到了EEXEEEXP。问题:如何针对这种边缘情况保护我的代码?

最佳答案

如果这些是唯一可能的值,您可能希望将 replaceAll 与正则表达式一起使用,而不是 replace:

String[] val  = {"-6.535402781EX-05","-6.535402781EEX-05","-6.535402781EE-05","-6.535402781EXP-05"};
for(String v :val){
    System.out.println(v.replaceAll("[EXP]{2,}", "E"));
}

关于java - 带有 EX、EEX、EXP 或 EE 科学记数法的字符串要加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55379650/

相关文章:

java - 使用java发送邮件

java - 在继续当前线程之前等待线程完成?

java - 将数据插入到通过 Java 动态更改的 MySql 表中

r - 完全删除整个 R session 的科学记数法

Matlab:在文本框中应用科学计数法

c - 如何在 C/C++ 中获得大数的精确二进制表示?

将 float 转换为 C 中的科学记数法(非标准格式)?

java - url解码导致tomcat中出现问号

java - Jenkins:doFill 函数没有正确获取@QueryParameter

matlab矩阵科学记数法