float num = 0.00005f;
     num+=1000;
     System.out.println(num);结果是1000.00006
可是当num+=10000;时,打印的结果就是
10000.0可是我需要小数点,即打印1000.00006.而且现在整个程序都用的是float,我还没办法改,这该怎么办?

解决方案 »

  1.   

    num+=10000; 是先将num转为int 相加后 转化为float
    你可以直接 num+=10000f;
      

  2.   

    那你麻烦了,float对小数是不可靠的,double也不可靠
    最好的办法是避免处理小数(比如要处理5位小数,就用整型保存实际数值乘以10万),或者BigDecimal
      

  3.   

    lz 回答下 我的问题啊!……
    或者 要不 你就 格式化试试 System.out.printf("%.5f", num);
      

  4.   

    canshui, 打印1000的结果是1000.00006,可是我打印的是10000(万),不是1000呀
      

  5.   

    alexandertech,可是我现在没有办法修改呀,是别人的程序,只能使用float了
      

  6.   

    没有办法的。你们既然要求这么高的精度为什么当初不用BigDecimal哪?
      

  7.   

    sorry, 我刚才 看错了...
      

  8.   

    问题 丢失精读了
    转成 double 的
    这样
    float num = 0.00005F;
    double num1 = (double)num;
    num1 += 10000;
    System.out.printf("%.5f", num1);
      

  9.   

    我打印的也是1000.00006,float是不精确的。