2016-04-27 49 views
0

指数表記なし10進数表現に文字列が指数関数的に値を変換します私は、文字列は次のように構築してい

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

使用してみてくださいhttps://docs.oracle.com/javase/7/docs/api/java/math/ BigDecimal.html#BigDecimal(java.lang.String) –

+0

最初に試してみてください –

+0

ありがとう、私はそれを行う方法がわからないので尋ねました。あなたの答えはとても役に立ちます。 – Beginner

答えて

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 

ストリングに複数の指数関数がある場合は、少し微調整する必要があります。

+0

ありがとう!それは魅力のように働く。私は時々文字列に複数の指数を持つようにそれを適応させます。あなたの時間をもう一度ありがとう。 – Beginner

3

あなたはBigDecimalクラスのメソッドtoPlainStringを使用することができます。このような

String num = "7.5e-4"; 
new BigDecimal(num).toPlainString();//output 0.00075 
0

あなたはその後、String.Formatの()でフォーマットしDouble.parseDoubleに解析することができます。

double d = Double.parseDouble("-7.5e-4"); 
    String s = String.format("%f", d); 
関連する問題