JAVA中将科学记数法的数字转换为十进制数

peg*_*ggy 3 java scientific-notation

我有一个问题:如果一个数字的小数点前有 8 位或更多位,则该数字将以科学计数法显示。
有没有一种简单的方法可以通过库或其他方式将此数字转换为十进制?
我开始创建一个手动方法来解析它,但它似乎过于复杂。

任何帮助将不胜感激。

input example: 1.0225556677556E7
Run Code Online (Sandbox Code Playgroud)

编辑:我还需要能够识别以科学计数法表示的数字

Gre*_*egH 5

您可以使用 NumberFormat 轻松实现您的目标。

String scientificNotation = "1.0225556677556E7";
Double scientificDouble = Double.parseDouble(scientificNotation);
NumberFormat nf = new DecimalFormat("################################################.###########################################");
decimalString = nf.format(scientificDouble);
Run Code Online (Sandbox Code Playgroud)

要回答您关于匹配科学记数法字符串的其他问题 - 您可以使用正则表达式和 String.matches()。尽管出现误报的概率应该非常低,但这个并不完美:

if(myString.matches("-?[\\d.]+(?:E-?\\d+)?")){
    //do work
}
Run Code Online (Sandbox Code Playgroud)