2009-08-04 8 views
0

Javaで文字列0E-11を0.00000000000に変換するにはどうすればよいですか?私は非科学的表記法で数値を表示したい。私はJavaの数値フォーマッタを試してみましたが、正確な小数点数を指定する必要がありますが、私はいつも知りません。私は単に、元の番号で特定された小数点以下の桁数を求めます。Javaで文字列3.0103E-7を0.00000030103に変換するにはどうすればよいですか?

答えて

3

BigDecimal.Passをパラメータとして使用し、String.formatを使用して、新しく作成したBigDecimalを科学的表記なしで表すことができます。 フロートクラスまたはダブルクラスも使用できます。

9

正しい答えは、ユーザーBigDecimalにあり、精度と位取り数を取得することです。その後、それらの数値をFormatterで使用します。このような類似した何か:BigDecimalを使用して

BigDecimal bg = new BigDecimal(rs.getString(i)); 
Formatter fmt = new Formatter(); 
fmt.format("%." + bg.scale() + "f", bg); 
buf.append(fmt); 
+0

これは、 –

+3

はい:)私が提案まさにユージンですが、悪魔があります詳細に通常、実例コードは説明よりも役立ちます。たとえば、誰かが(Oracle 10gの)ストアドプロシージャでEXECを使用するように提案しました。アイデアは正しいです(関数の代わりにストアドプロシージャを使用)が、詳細(CALLとEXEC)は間違っていました。 Torvaldsがかつて言ったように、「私にコードを教えてください」。 http://lkml.org/lkml/2000/8/25/132 –

+1

あなたは冗談を言っていますか?あなたはここでどのような詳細を必要としていますか?それはすでに非常に簡単です...全体のアイデアについてです。 :) –

2
double d = Double.parseDouble("7.399999999999985E-5"); 
NumberFormat formatter = new DecimalFormat("###.#####"); 
String f = formatter.format(d); 
System.out.println(f); // output --> 0.00007 
3

public static String removeScientificNotation(String value) 
{ 
    return new BigDecimal(value).toPlainString(); 
} 

public static void main(String[] arguments) throws Exception 
{ 
    System.out.println(removeScientificNotation("3.0103E-7")); 
} 

プリント:

0.00000030103 
+0

明らかに、これは私の問題で唯一の修正です! –

関連する問題