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

时间:2015-06-04 14:26:59

标签: java scientific-notation

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

任何帮助将不胜感激。

input example: 1.0225556677556E7

编辑:我还需要能够识别科学记数法中的数字

1 个答案:

答案 0 :(得分:3)

您可以使用NumberFormat轻松完成目标。

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

要回答您关于匹配科学记数法字符串的其他问题,您可以使用正则表达式和String.matches()。虽然获得误报的可能性非常低,但这个并不完美:

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