gpt4 book ai didi

java - 如何将包含 "e+"的字符串转换为长字符串?

转载 作者:行者123 更新时间:2023-12-01 17:43:39 24 4
gpt4 key购买 nike

1.3094266712875436e+18转换为1309426671287543600

我写了这样的方法,有更好的方法吗?


public static void main(String[] args) {
String a = "1.3094266712875436e+18";

System.out.println(convert(a));

}

private static long convert(String a) {
StringBuilder sb = new StringBuilder(a.length());
StringBuilder sb2 = new StringBuilder(2);
boolean isPlus = false;
boolean countLength = false;
int length = 0;
for (char c : a.toCharArray()) {
if ('.' == c) {
countLength = true;
continue;
}
if ('e' == c) {
continue;
}

if ('+' == c) {
isPlus = true;
continue;
}

if (isPlus) {
sb2.append(c);
} else {
sb.append(c);
if (countLength) {
length++;
}
}
}

System.out.println(sb.toString());
System.out.println(sb2.toString());

long pow = 1;
for (int i = 0; i < Integer.parseInt(sb2.toString()) - length; i++) {
pow = pow * 10;
}

System.out.println(pow);

return Long.parseLong(sb.toString()) * pow;
}

打印出来

13094266712875436
18
100
1309426671287543600

最佳答案

您可以使用BigDecimal 。这将精确解析十进制字符串,然后您可以使用 longValue() 将其转换为 long。

String a = "1.3094266712875436e+18";
long value = new BigDecimal(a).longValue();
System.out.println(value);

输出:

1309426671287543600

关于java - 如何将包含 "e+"的字符串转换为长字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57955949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com