Java 将Double打印为十进制长度未知的字符串

Java 将Double打印为十进制长度未知的字符串,java,Java,我需要打印一个双精度字符串,但我不知道小数点后有多少位,我必须准备尽可能多的小数点。好吧,现在我用的是这个丑陋的解决方案: Double dubs = 0.000157; NumberFormat formatter = new DecimalFormat( "##.########################################################################################"); System.out.println(

我需要打印一个双精度字符串,但我不知道小数点后有多少位,我必须准备尽可能多的小数点。好吧,现在我用的是这个丑陋的解决方案:

Double dubs = 0.000157;

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

试试这里,伙计。我想这就是你说的。答案在下面

这就是我的意思

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();

您可以在不进行转换的情况下执行此操作:

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”用作格式字符串时会丢失精度。如果你是这样的话,使用“%.10f”

这似乎是基于Steampunkery的想法。问题是我需要一根真正的绳子,我意识到我不太清楚

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

double一开始不能有那么多的小数,为什么还要把它转换成字符串呢?为什么不直接打印呢?因为它是用科学记数法打印的,而这不符合我的要求。在双倍数字中,你需要精确点(.)后的数字。请不要只发布链接答案。我还不能发表评论。我应该重复别人的答案吗?将问题标记为重复。好吧,酷,我还没有意识到这是一个选项。我知道我现在可以了。谢谢大家。既然它是双精度的,不是%lf吗?@Tyler这是Java,不是COk,但要明确一点,我需要一个实际的字符串对象,以便将其放置在XML文档中。是的,但我假设Java将遵循与printf相同的格式,这就是我问的原因。Cheers@Steampunkery如果双dubs=0.00015701,您能给出建议吗;