[英]How to convert exponential number String to an integer number String
在 Java "24490677"
字符串類型的指數整數(例如"2.4490677E7"
)轉換為整數字符串(例如"24490677"
)的最佳/最快方法是什么?
編輯:已知輸入始終是整數。
我目前的提議如下(使用來自 Apache Commons 的org.apache.commons.lang.math.NumberUtils
):
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());
}
如果您需要保持精度不變,那么您可以使用 BigDecimal 讀取字符串,然后將其轉換為 int 值
嗨,我們可以從這個“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());
}
}
輸出將是:24490677
我希望你正在尋找這個..謝謝。
怎么樣
Integer res = ((Double) Double.parseDouble(input)).intValue();
讓我建議最好的方法。 它應該注意精度。 如果字符串是十進制值,則需要精確十進制后的精度。
String str = "123456789.0111222333444555666777888999E10";
try {
/** DOUBLE **/
double doubleVal = Double.parseDouble(str);//still uses 'E'
System.out.println("Pure Double: "+ doubleVal);// Pure Double: 1.23456789011122227E18
System.out.println(new DecimalFormat("0000000000.00000000000000").format(doubleVal));//1234567890111222270.00000000000000
String plainStrFrmDouble = BigDecimal.valueOf(doubleVal).toPlainString();
System.out.println("From double: " + plainStrFrmDouble);//From double: 1234567890111222270
//convert to desired decimal format
System.out.println(new DecimalFormat("0.0000000").format(Double.parseDouble(plainStrFrmDouble)));//1234567890111222270.0000000
/** BIG DECIMAL **/
String plainStrFrmBigDec = new BigDecimal(str).toPlainString();
System.out.println("From bigdecimal: " + plainStrFrmBigDec); //From bigdecimal: 1234567890111222333.444555666777888999
System.out.println("From bigdecimalNonplain" + new BigDecimal(str));//From bigdecimalNonplain1234567890111222333.444555666777888999 *The most PRECISE way*
} catch (NumberFormatException nfe) {
System.err.println("Error while formatting.");
}
所以,我認為, new BigDecimal(str) 應該足夠了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.