我正在尝试将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
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要评论部分中的逻辑,通用的一个会很好.谢谢.
Joa*_*uer 80
使用Double.valueOf()并将结果转换为long:
Double.valueOf("9.18E+09").longValue()
Run Code Online (Sandbox Code Playgroud)
Boz*_*zho 13
BigDecimal bd = new BigDecimal("9.18E+09");
long val = bd.longValue();
Run Code Online (Sandbox Code Playgroud)
但这增加了开销,而小数字则不需要.对于可表示的数字long,请使用Joachim Sauer的解决方案.