当我写这段代码时
float f=56.7876f;
System.out.print(String.format("%32.12f",f));
输出为:56.787601470947
但是,当我写这段代码时
System.out.print(String.format("%32.12f",56.7876));
输出为:56.787600000000
为什么在这两种情况下都会打印出不同的输出,尽管两个代码的功能都相同?
答案 0 :(得分:1)
参考why f is placed after float values?现在考虑一下,
float f = 56.7876f;
System.out.print(String.format("%32.12f", f)); // 56.787601470947
System.out.print(String.format("%32.12f", 56.7876)); // 56.787600000000
System.out.print(String.format("%32.12f", 56.7876f)); // 56.787601470947
对于浮点文字,默认类型为double
。当您说f = 56.7876
时,编译器将发出警告Type mismatch: cannot convert from double to float
。您需要显式地将其转换为float(考虑到从double到float的精度损失)。
在此示例中,从 56.7876 打印的输出的类型为 double 56.787600000000 ,而其余的类型为 float 。< / p>
为了给你一个更好的例子,请考虑以下情况。
float f = 56.7874f;
System.out.print(String.format("%32.12f", f)); // 56.787399291992
System.out.print(String.format("%32.12f", 56.7874)); // 56.787400000000
System.out.print(String.format("%32.12f", 56.7874f)); // 56.787399291992
这清楚地表明从56.7874
到56.7873
答案 1 :(得分:0)
是System.out.print(的String.format( “%32.12f”,56.7876));它返回12个字符小数部分填充为0,它将56.7876视为double。
您可以参考以下链接: - https://dzone.com/articles/java-string-format-examples