我有一个像这样的字符串构建:
String str = "m -263.61653,-131.25745 c -7.5e-4,-1.04175 0.71025,-1.90875 1.67025,-2.16526"
-7.5e-4 我想改成 -0.00075
我想将指数值更改为十进制值以获得类似这样的内容:
String str = "m -263.61653,-131.25745 c -0.00075,-1.04175 0.71025,-1.90875 1.67025,-2.16526"
我有很多像这样的字符串来检查和转换。
我真的不知道如何有效地改变指数值,因为所有这些值都在一个字符串中......
如果你知道一种有效而快速的方法,请告诉我。
答案 0 :(得分:3)
您可以使用toPlainString
类中的方法BigDecimal
:
String num = "7.5e-4";
new BigDecimal(num).toPlainString();//output 0.00075
答案 1 :(得分:1)
这样的事情应该可以胜任:
public static void main(String[] args) {
String patternStr = "[0-9.-]*e[0-9.-]*";
String word = "m -263.61653,-131.25745 c -7.5e-4,-1.04175 0.71025,-1.90875 1.67025,-2.16526";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(word);
if (matcher.find()) {
Double d = Double.valueOf(matcher.group());
System.out.println(word.replaceAll(patternStr, BigDecimal.valueOf(d).toPlainString()));
}
}
输出将是:
m -263.61653,-131.25745 c -0.00075,-1.04175 0.71025,-1.90875 1.67025,-2.16526
当然如果String上有多个指数,你将不得不稍微调整一下。
答案 2 :(得分:0)
您可以使用Double.parseDouble进行解析,然后使用String.format()进行格式化:
double d = Double.parseDouble("-7.5e-4");
String s = String.format("%f", d);