這就是科學記數法。
和你得到388,而不是311,因爲你是乘以1000000而非1048576(1024 * 1024)
編輯劃分:311甚至不與1048576實現,這樣,你會得到370 ......所以,錯誤可能在您的計算中;)
由於described here,您只需通過格式化程序將科學表示法轉換爲十進制表示法。
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
這是一個完全正常的浮動點顯示類型。 'E'表示次數爲10的次冪,例如。 「3.88次10的-4次冪」。 –
看起來你只是在打印科學記數法。值沒有改變。查看[java數字格式](http://docs.oracle.com/javase/6/docs/api/java/text/NumberFormat.html) –
我們需要多少重複答案? –