我试图使用java从excel表中读取值.当我在excel的单元格中键入10个以上的字母时,它以指数形式显示,如"9.78313E + 2".但这不是我给出的真实数字.任何身体都可以帮助我解决这个问题.如何使用java语言将上述指数形式转换为原始数字.
提前致谢
Bri*_*new 12
Double.parseDouble("9.78313E+2");
给我
978.313
有关详细信息,请参阅文档.
按照下面的进一步查询,如果您已经输入4256411411并且Excel将其显示为4.26E+09,则将该值放入parseDouble()将仅提供给您4260000000.如果您需要原始文件,可能需要以更全面的格式为Java程序输出Excel文件,和/或使用Java/Excel API(例如POI)查询它
小智 7
您可以转换如下,例如:
new BigDecimal("406770000244E+12").toBigInteger();
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());  
印刷: -
4.256411411E9  
4256411411
对不起,但没有上述问题的答案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);
    }
如您所见,如果数字是自然的,我会得到 - 比如说 - 20000000 而不是 2E7 (等等) - 没有任何小数点。
如果是十进制,我只能得到 2 个十进制数字。
希望这会有所帮助。
| 归档时间: | 
 | 
| 查看次数: | 63775 次 | 
| 最近记录: |