それが科学表記法です。
そして、1048576 (1024 * 1024) ではなく 1000000 で除算しているため、311 ではなく 388 が得られます。
編集: 311 は 1048576 でも達成されません。そのようにして 370 を取得します...したがって、エラーはおそらくあなたの計算にあるでしょう ;)
here で説明されているように、フォーマッターを使用して科学表記法を 10 進表記法に変換するだけです。
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
10 進表記の MB1: 0.000388
科学表記法の MB2: 3.7002563E-4
10 進表記の MB2: 0.0003700256