public class A
{
  public static void main(String[] args)
  {
    double num= 256.879;
    System.out.println("the result is: "+ fracPart(num));
  }
  public static double fracPart(double x)
  {
    return x- whole(x);
  }
  public static int whole(double y)
  {
    return (int)y ;
  }
}电脑结果显示不是0.879 而是0.87900000000000191
将数字换成256.967 不是显示0.967 而是 0.96699999999999845
这是为什么?

解决方案 »

  1.   

    用SimpleDataFormat format=new SimpleDateFormat("#.####");来格式化输出这个是double精度问题
      

  2.   

    这是double类型的原因,你可以用printf方法来格式化显示
      

  3.   

    能否不用格式化来解决而采用其他方法,另外把 double 换成 float 也会出现这种问题,也是float的精度问题吗?
      

  4.   

    浮点数精度问题,我原来也不知道,后来在c#碰到了,才发现java也有