将java中的指数值转换为数字格式

use*_*173 11 java

我试图使用java从e​​xcel表中读取值.当我在excel的单元格中键入10个以上的字母时,它以指数形式显示,如"9.78313E + 2".但这不是我给出的真实数字.任何身体都可以帮助我解决这个问题.如何使用java语言将上述指数形式转换为原始数字.

提前致谢

Bri*_*new 12

Double.parseDouble("9.78313E+2");
Run Code Online (Sandbox Code Playgroud)

给我

978.313
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档.

按照下面的进一步查询,如果您已经输入4256411411并且Excel将其显示为4.26E+09,则将该值放入parseDouble()将仅提供给您4260000000.如果您需要原始文件,可能需要以更全面的格式为Java程序输出Excel文件,和/或使用Java/Excel API(例如POI)查询它


小智 7

您可以转换如下,例如:

new BigDecimal("406770000244E+12").toBigInteger();
Run Code Online (Sandbox Code Playgroud)


Roh*_*ain 5

BigDecimal如果您想要以下中的确切值,您可以使用Excel Sheet:-

BigDecimal bd = new BigDecimal("4256411411");
System.out.println(bd.doubleValue());

// If you are sure that's not a floating point number, then use
System.out.println(bd.longValue());  
Run Code Online (Sandbox Code Playgroud)

印刷: -

4.256411411E9  
4256411411
Run Code Online (Sandbox Code Playgroud)


Jam*_*esC 5

对不起,但没有上述问题的答案Double.parseDouble()Double.valueOf()......解决我的问题,我继续获得指数“E”值...

这个链接有一个更好的方法来解决这个问题,正如我在那里写的那样 - 有一个非常好的解决方案:

我需要将一些 double 转换为货币价值,并且发现大多数解决方案都可以,但不适合我。

DecimalFormat最终是我的方式,所以这就是我所做的:

   public String foo(double value) //Got here 6.743240136E7 or something..
    {
        DecimalFormat formatter;

        if(value - (int)value > 0.0)
            formatter = new DecimalFormat("0.00"); //Here you can also deal with rounding if you wish..
        else
            formatter = new DecimalFormat("0");

        return formatter.format(value);
    }
Run Code Online (Sandbox Code Playgroud)

如您所见,如果数字是自然的,我会得到 - 比如说 - 20000000 而不是 2E7 (等等) - 没有任何小数点。

如果是十进制,我只能得到 2 个十进制数字。

希望这会有所帮助。


Nar*_*ain 5

试试这个肯定会起作用
double value = 2.06E //real 205809104.13
BigDecimal.valueOf(value)
对我有用