问题描述:
   目的是要取消从得到的值中的科学计数形式。
   代码如下:
   double db = cell.getNumericCellValue();//客户输的值是100000000(有8个0),在这句中得到的值db=1.0E8
   BigDecimal  big= BigDecimal.valueOf(db);//这一步是去消科学计数形式,但big的值还是1.0E+8
问题:怎么取消big的科学计数的形式,让1.0E+8还原为10000000
   我就要得到的是把1.0E+8还原为10000000,别的不变我也作了测试,如果整数后面连续有7个0或8个0的时候就会有出现这种科学计数形式,反之就是正常录入的值。
如1000000(后有6个0)big的值是1000000谢谢!

解决方案 »

  1.   

    big.longValue();这个可以,但是如果是小数的话,小数点后面的就舍去了
      

  2.   

    用这个吧,big.longValueExact(),如果big是小数的话会抛出异常,这样你catch一下处理就可以了,呵呵。longValueExact
    public long longValueExact()将此 BigDecimal 转换为 long,以检查丢失的信息。如果此 BigDecimal 具有非零小数部分,或者超出 long 结果的可能范围,则抛出 ArithmeticException。 返回:
    转换为 long 的此 BigDecimal。 
    抛出: 
    ArithmeticException - 如果 this 具有非零小数部分,或者不适合用 long 表示。
    从以下版本开始: 
    1.5