代码如下:
public class Test {
public static void main(String[] args) {
float f0 = 58635.12055F;
float f1 = 58635.12155F;
float f2 = 58635.12255F;
float f3 = 58635.12355F;
float f4 = 58635.12455F;
float f5 = 58635.12555F;
float f6 = 58635.12655F;
float f7 = 58635.12755F;
float f8 = 58635.12855F;
float f9 = 58635.12855F;
System.out.println("58635.12055F: "+f0);
System.out.println("58635.12155F: "+f1);
System.out.println("58635.12255F: "+f2);
System.out.println("58635.12355F: "+f3);
System.out.println("58635.12455F: "+f4);
System.out.println("58635.12555F: "+f5);
System.out.println("58635.12655F: "+f6);
System.out.println("58635.12755F: "+f7);
System.out.println("58635.12855F: "+f8);
System.out.println("58635.12955F: "+f9);
}
}结果显示很奇怪:不知什么原因,
58635.12055F: 58635.12
58635.12155F: 58635.12
58635.12255F: 58635.12
58635.12355F: 58635.125
58635.12455F: 58635.125
58635.12555F: 58635.125
58635.12655F: 58635.125
58635.12755F: 58635.13
58635.12855F: 58635.13
58635.12955F: 58635.13

解决方案 »

  1.   

    float有效数字是7位,超过的都不准
      

  2.   

    输出是根据 Float.toString(float value) 决定的。javadoc里说
      

  3.   

    float是一种比较低级的基本数据类型,精确度不是很高,所以一般只保存到小数点后两个位置,建议使用double类型,而且如果要进行四舍五入,需要使用java.lang.Math中的round()方法……
      

  4.   

    将float型改成double型的就可以了
    float型只有4个字节,换算成十进制只有6-7位有效数字。
      

  5.   

    设置的限制啊,float的 限制