2017-10-09 73 views
-1

我需要打印Double作爲字符串,但我不知道會有多少個小數位,我必須儘可能多地進行準備。對,現在我正在使用這個醜陋的解決方案:打印雙精度爲未知小數的字符串

Double dubs = 0.000157; 

NumberFormat formatter = new DecimalFormat(
    "##.########################################################################################"); 
System.out.println(formatter.format(dubs)); 
+2

雙打首先不能有很多小數。 – SLaks

+4

爲什麼你甚至需要將它轉換爲字符串?爲什麼不直接打印呢? – Mureinik

+0

因爲它以科學記數法打印,並且不符合我的要求 –

回答

0

試試這裏的人。我想這就是你說的。底部給出的答案。

Number of decimal digits in a double

這裏是我的意思。

double d= 234.12413; 
String text = Double.toString(Math.abs(d)); 
int integerPlaces = text.indexOf('.'); 
int decimalPlaces = text.length() - integerPlaces - 1; 

然後你只需將它們連接起來

String xmlString = integerPlaces.toString() + "." + decimalPlaces.toString(); 
+0

請不要發佈鏈接只有答案。 – Steampunkery

+0

我還不能評論。我應該重複別人的回答嗎? – Sinil

+2

將問題標記爲重複。 – azurefrog

1

你可以不經過任何轉換做到這一點:

public class codesnippets { 

public static void main(String[] args) 
{ 
    Double dubs = 0.000157; 
    System.out.printf("%f", dubs); 
} 

} 

您還可以使用

Double dubs = 0.000157; 
String dubs_format = String.format("%f", dubs); 
System.out.println(dubs); 

編輯:顯然有使用「%f」時的精度損失a是格式字符串。如果是這種情況,請使用「%.10f」

+0

因爲它是雙重的不是%lf? – Tyler

+0

@Tyler這是Java,而不是C – Steampunkery

+0

好吧,但要清楚我需要一個實際的字符串對象,以便將其放置在一個XML文檔中 –

0

這似乎是基於Steampunkery的想法。問題是我需要一個實際的字符串,我意識到我並不清楚。

String dubString= String.format("%f", dubs); 
System.out.println(dubString);