如何在Java中使用String.format()设置双精度的格式

如何在Java中使用String.format()设置双精度的格式,java,string,formatting,Java,String,Formatting,我正试图以同样的方式格式化double,但我的Java给了我一个“非法FormatPrecisionException”。我该如何解决这个问题 public static void main(String[] args) { double t = 321.4532; String str = String.format("%.1d", t); } %d用于整数值,请尝试使用 public static void main(String[] args)

我正试图以同样的方式格式化double,但我的Java给了我一个“非法FormatPrecisionException”。我该如何解决这个问题

public static void main(String[] args) {
    double t = 321.4532;
    String str = String.format("%.1d", t);
}    

%d用于整数值,请尝试使用

public static void main(String[] args) {
    double t = 321.4532;
    String str = String.format("%.1f", t);
}  

从[网站][1]引述:

这里不要尝试使用“d”表示double,因为它用于格式化整数,在格式化指令中代表十进制

使用%.2f,您会很好


[1] :https://www.java67.com/2014/06/how-to-format-float-or-double-number-java-example.html#:~:text=格式(%22%25.,float%20data%20type%20in%20Java.

根据文档,当精度为-1以外的负值、转换不支持精度或该值不受支持时,会引发异常。只需查看文档中的String.format()您将看到
%d
只应用于自然数,而不是实数