如何在Java中使用String.format()设置双精度的格式
我正试图以同样的方式格式化double,但我的Java给了我一个“非法FormatPrecisionException”。我该如何解决这个问题如何在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)
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
只应用于自然数,而不是实数