什么是java float默认精度

时间:2016-06-26 13:48:46

标签: java

代码是:

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是否有默认精度?

1 个答案:

答案 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值。