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

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

提前致谢

 Double.parseDouble("9.78313E+2"); 

给我

 978.313 

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

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

您可以转换如下,例如: new BigDecimal(“406770000244E + 12”)。toBigInteger() ;

在从excel表格中读取值之前,将列格式化为数字。

这可能对你有所帮助

更新

 HSSFCell cellE1 = row1.getCell((short) 4); cellE1.setCellType(HSSFCell.CELL_TYPE_NUMERIC); Double e1Val = cellE1.getNumericCellValue(); BigDecimal bd = new BigDecimal(e1Val.toString()); long lonVal = bd.longValue(); System.out.println(lonVal); 

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

 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’值……

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

我需要将一些双倍转换为货币值,并且大多数情况下解决方案都可以,但不适合我。

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位小数。

希望这会有所帮助。

您可以使用以下方法轻松转换:

Double.valueOf("9.78313E+2").longValue()

 BigDecimal bd = new BigDecimal("9.78313E+2"); long val = bd.longValue(); 

假设给定的数字是Stringforms。

在读取单元格值之前,必须将单元格转换为数字格式。 下面是用于获取指数格式的实际值的代码片段:

 nextCell.setCellType(XSSFCell.CELL_TYPE_NUMERIC); Double doubleValue = nextCell.getNumericCellValue(); BigDecimal bd = new BigDecimal(doubleValue.toString()); long lonVal = bd.longValue(); String phoneNumber = Long.toString(lonVal).trim(); System.out.print("PhoneNumber " + phoneNumber); 

博客一直在展示实际结果。

此致,Ankur

您还可以使用包装类:

 Double bd=new Double(4445566622); System.out.println(bd.longValue()); 

输出-4445566622