代码是:
public static void main(String [] args) {
float f = 5.69f;
String floatStr = String.format("%.15f", f);
System.out.println(f);
System.out.println(floatStr);
}
f是5.69。 floatStr是5.690000057220459。 System.out.println是否有默认精度?
答案 0 :(得分:1)
float
本身没有特定的精确度。它是浮点号,特别是IEEE-754 32位二进制浮点数。
重新提出println
个问题,它不是println
,它是如何将浮动转换为String
的。 JavaDoc涵盖Float.toString(float)
:
m 或 a 的小数部分必须打印多少位数?必须至少有一个数字来表示小数部分,并且除此之外必须有多个,但只有多少个,更多的数字才能唯一地将参数值与float类型的相邻值区分开来。也就是说,假设 x 是由此方法为有限非零参数 f 生成的十进制表示所表示的精确数学值。那么 f 必须是最接近 x 的
float
值;或者,如果两个浮点值同样接近 x ,则 f 必须是其中之一,并且 f 的有效位的最低有效位必须是0。
或者换句话说,默认String
只有必要的数字,如果你拿走了String
并转换回float
,你就会得到相同的float
值。