那就是科学记数法。
你得到 388 而不是 311 因为你除以 1000000 而不是 1048576 (1024 * 1024)
编辑:即使使用 1048576 也没有达到 311,这样你得到 370 ......所以错误可能在你的计算中;)
如此处所述,您只需通过格式化程序将科学记数法转换为十进制记数法。
DecimalFormat df = new DecimalFormat("#.########");
return df.format(fileLengthMegabytes);
运行示例:http: //ideone.com/2lkKv7
import java.util.*;
import java.lang.*;
import java.text.*;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
DecimalFormat df = new DecimalFormat("#.##########");
float fileLengthMegabytes1 = (float) 388 / 1000000;
float fileLengthMegabytes2 = (float) 388 / 1048576;
System.out.println("MB1 in Scientific Notation: " +
fileLengthMegabytes1);
System.out.println("MB1 in Decimal Notation: " +
df.format(fileLengthMegabytes1));
System.out.println("MB2 in Scientific Notation: " +
fileLengthMegabytes2);
System.out.println("MB2 in Decimal Notation: " +
df.format(fileLengthMegabytes2));
}
}
输出:
MB1 科学计数法:3.88E-4
十进制表示法的 MB1:0.000388
MB2 科学计数法:3.7002563E-4
十进制表示法的 MB2:0.0003700256