Java 字符串的格式化方法
当我写这段代码的时候Java 字符串的格式化方法,java,Java,当我写这段代码的时候 float f=56.7876f; System.out.print(String.format("%32.12f",f)); System.out.print(String.format("%32.12f",56.7876)); 输出为:56.787601470947 但是,当我写这段代码的时候 float f=56.7876f; System.out.print(String.format("%32.12f",f)); System.out.print(Str
float f=56.7876f;
System.out.print(String.format("%32.12f",f));
System.out.print(String.format("%32.12f",56.7876));
输出为:56.787601470947
但是,当我写这段代码的时候
float f=56.7876f;
System.out.print(String.format("%32.12f",f));
System.out.print(String.format("%32.12f",56.7876));
产量为:56.787600000000
为什么在这两种情况下,尽管两种代码的功能相同,但仍打印不同的输出?System.out.print(String.format(“%32.12f”,56.7876))代码>返回12字符分数填充0,并将其视为56.7876倍。
您可以参考以下链接:-System.out.print(String.format(“%32.12f”,56.7876))代码>返回12字符分数填充0,并将其视为56.7876倍。
您可以参考以下链接:-。这就是原因
float ohNoes = 56.7876;
将产生编译器错误(java:不兼容类型:可能从double转换为float
)
所以如果你写
public class Main {
public static void main(String... args) {
System.out.println(String.format("%32.12f",56.7876));
System.out.println(String.format("%32.12f",56.7876f));
}
}
你可以看到不同之处。第一个打印double
literal56.7876
,而第二个打印最接近的float
-表示56.7876
。这就是原因
float ohNoes = 56.7876;
将产生编译器错误(java:不兼容类型:可能从double转换为float
)
所以如果你写
public class Main {
public static void main(String... args) {
System.out.println(String.format("%32.12f",56.7876));
System.out.println(String.format("%32.12f",56.7876f));
}
}
你可以看到不同之处。第一个打印double
literal56.7876
,而第二个打印最接近的float
-表示56.7876
字符串.format(format,Object…args)
最终调用:
private void print(float value, Locale l) throws IOException {
print((double) value, l);
}
对于float
文本。请参见中的Formatter$FormatSpecifier.java
您看到的值56.787601470947
是因为浮点文本56.7876f
被转换为双精度,如上面的方法所示
如果打印以下内容:
float f = 56.7876f;
System.out.println( (double)f );
您将看到相同的值:56.787601470947
字符串。format(format,Object…args)
最终调用:
private void print(float value, Locale l) throws IOException {
print((double) value, l);
}
对于float
文本。请参见中的Formatter$FormatSpecifier.java
您看到的值56.787601470947
是因为浮点文本56.7876f
被转换为双精度,如上面的方法所示
如果打印以下内容:
float f = 56.7876f;
System.out.println( (double)f );
您将看到相同的值:56.787601470947
,因为56.7876
是一个double
文本。尝试System.out.print(String.format(“%32.12f”,56.7876f))代码>您想知道为什么56.787601470947265625是56.7876的单精度浮点表示形式,为什么56.787599999999763537753903865814208984375是56.7876的双精度浮点表示形式吗?请参阅和,因为56.7876
是double
文本。尝试System.out.print(String.format(“%32.12f”,56.7876f))代码>您想知道为什么56.787601470947265625是56.7876的单精度浮点表示形式,为什么56.787599999999763537753903865814208984375是56.7876的双精度浮点表示形式吗?看,这并没有回答眼前的问题。这并没有回答眼前的问题。@Turing85我并不是说它是浮点数。56.7876f是。然后附加一个f
使其成为float
literal。@Turing85请查看行,因为float literal 56.7876f
@Turing85我不是指它作为float literal。56.7876f是。然后附加一个f
使其成为float
literal。@Turing85请查看行,因为float literal 56.7876f