2016-11-09 9 views
-1

数字が12345686844.71の文字列があり、これをdoubleに変換する必要があります。これを数式で倍精度の値で使用するためにstringと同じ値を得ることができます。 これが試されました私が、しかし、文字列に格納されている実際には同じ値でなければなりません....これは動作していないと我々は1.2345686844として値を取得している文字列を解析する際の問題

double d = Double.parseDouble(string) 
+0

可能な複製を(http://stackoverflow.com/質問/ 10577610/what-is-difference-between-double-parsedoublestring-and-double-valueofstring) –

答えて

-3

ダブルD = Double.parseDouble(文字列)

+0

これは私によって試されましたが、これは動作していないので、1.2345686844という値を得ています。文字列に格納されている値と同じです – Sandeep

+1

なぜあなたは質問の一部をコピー/ペーストしましたか? – xenteros

-1

javaで提供されているBigDecimalクラスを使用できます。

BigDecimal value = new BigDecimal(str); 

がref:あなたがやっていることhttps://stackoverflow.com/a/3752626/7135460

+0

OKこれは問題ありませんが、double型の式に同じ値を格納しようとしています。double z = x *(y/a)xはdouble、yはdouble、a​​は大きな10進数 – Sandeep

1

は正しいです。科学の表記法で数字を印刷しています。

代わりのSystem.out.print()次のようにします。

double d = Double.parseDouble(string) 
System.out.printf("dexp: %f\n", d); 

あなたはEが印刷された値の末尾にはほとんど存在していることがわかりますあなたダブルの全体値を貼り付けている場合。それはmultiplied by 10 to the power ofの略で指数があります。

重要なのは、印刷されているものではなく、メモリ内のものです。 dに格納されている値は正しいです。印刷された値には、多くの無駄な末尾のゼロが含まれることがあります。

あなたはまた、DecimalFormatクラスを使用することができます:[Double.parseDouble(文字列)とは、Double.valueOf(文字列)との違いは何ですか?]の

DecimalFormat df = new DecimalFormat("0", DecimalFormatSymbols.getInstance(Locale.ENGLISH)); 
System.out.println(df.format(d));