2016-05-12 71 views
0

在Java中将指数整数字符串类型(例如"2.4490677E7")转换为整数字符串(例如"24490677")的最佳/最快方法是什么?如何将指数数字字符串转换为整数字符串

编辑:输入已知总是一个整数。

我目前的建议如下(使用org.apache.commons.lang.math.NumberUtils来自Apache的百科全书):

String input = "2.4490677E7"; 
String res = null; 
Double d = NumberUtils.toDouble(input); 
if (d != 0.0d) { 
    // we have a double number here 
    res = String.format("%d", d.intValue()); 
} 
+0

有什么问题呢? – Amit

+0

2.4112E2 *转换*的结果应该是什么? –

+3

如果您需要精确度不变,那么您可以使用BigDecimal读取字符串,然后将其转换为int值。 –

回答

2

如果你需要的精度是不动,那么你可以使用的BigDecimal读取字符串,然后将其转换为int值

+2

'new BigDecimal(input).toPlainString()' –

+0

转换为int部分,在他的情况下不需要 –

+0

@JoopEggen这将是我的首选解决方案。 – dnl

1

嗨,我们可以从这个 “2.4490677E7” 得到这个 “24490677” 这里是代码

import java.math.BigDecimal; 

public class Test { 
public static void main(String[] args) { 

    String value = "2.4490677E7"; 
    BigDecimal result = new BigDecimal(value); 
    System.out.println(result.longValue()); 
} 
} 

输出将是:2 4490677

我希望你在找这个.. 谢谢。

1

怎么样

Integer res = ((Double) Double.parseDouble(input)).intValue();