我用int len = FileInputStream.read(filename)的方法得到了文件大小14022字节,怎么转化成13.6KB的形式。
我用了下面的方法,但是结果不对??? int len = input.read(buffer, 0, buffer.length);
double tmp = (Math.round(((double)len / 1024.00)*100))/100.00;

解决方案 »

  1.   


    public static String bytes2kb(long size) {
    DecimalFormat df = new DecimalFormat("###.##");
    float f;
    if (size < 1024 * 1024) {
    f = (float) ((float) size / (float) 1024);
    return (df.format(new Float(f).doubleValue()) + "KB");
    } else {
    f = (float) ((float) size / (float) (1024 * 1024));
    return (df.format(new Float(f).doubleValue()) + "MB");
    }
    } public static void main(String[] args) { System.out.println(bytes2kb(14022));
    }
      

  2.   

    我在main里这样写的,怎么输出的不是string呢? DecimalFormat df = new DecimalFormat("###.##");
    float f;
    int len = 14022;
    f = (float) ((float) len / (float) 1024);
    df.format(new Float(f).doubleValue());

    System.out.println(df.toString());
      

  3.   


    理解错误,这句话不是得到格式化后的字符串,而是负责格式化这个对象的toString():
      System.out.println(df.toString());应该是:
      String str = df.format(new Float(f).doubleValue());
      System.out.println(str);
      

  4.   

    int i = 14022 ;
    i = i*10/1024;
    double d = i/10d ;
    System.out.println(d);
    ok
      

  5.   

    现在行了,不过我这个文件是14022字节,用文件属性看是13.6KB,用上面的算法是13.69KB。究竟哪个更准确些呢?算这个文件大小是为了用ftp的jar包下载文件用的,大小差一点行吗?
      

  6.   

    反正你都是个近似结果,还在乎这种“哪个更准确干啥”;平心而论应该是上面算法更准确点点。
    如果是我的话,连小数都不要了,直接用右移算法求个大致 KB 数就算了,计算效率还高点。String str = (size >> 10) + "KB";