Java以指数表示法解析数字
我试图将String转换为整数,我得到一个NumberFormatException
。 原因很明显。 但我需要一个解决方法。 以下是示例代码。
public class NumberFormatTest { public static void main(String[] args) { String num = "9.18E+09"; try{ long val = Long.valueOf(num); }catch(NumberFormatException ne){ //Try to convert the value to 9180000000 here } } }
我需要评论部分中的逻辑,通用的一个会很好。 谢谢。
使用Double.valueOf()
并将结果转换为long
:
Double.valueOf("9.18E+09").longValue()
BigDecimal bd = new BigDecimal("9.18E+09"); long val = bd.longValue();
但这会增加开销,而小数字则不需要。 对于可以long
表示的数字,请使用Joachim Sauer的解决方案。