2016-02-25 66 views
3

如何將4000千字節轉換爲4兆字節的JavaScript?如何將千字節轉換爲兆字節的JavaScript

我曾嘗試

function formatSizeUnits(bytes){ 
     if  (bytes>=1073741824) {bytes=(bytes/1073741824).toFixed(2)+' GB';} 
     else if (bytes>=1048576) {bytes=(bytes/1048576).toFixed(2)+' MB';} 
     else if (bytes>=1024)  {bytes=(bytes/1024).toFixed(2)+' KB';} 
     else if (bytes>1)   {bytes=bytes+' bytes';} 
     else if (bytes==1)   {bytes=bytes+' byte';} 
     else      {bytes='0 byte';} 
     return bytes; 
} 


formatSizeUnits(4000); 

答我得到的是 「3.91 KB」。我需要4MB

+1

使用'Math.round(字節/ 1024)+ 'KB';' – RRK

+0

4000千字節通常不被認爲等於4MB - 但也有例外,其中適用。如果你想讓你的函數成爲這樣一個例外,分別用1000000000,1000000和1000代替除數 –

+0

可能你的意思是'4kb'而不是'4mb' – RRK

回答

6

您的功能是正確的。它只接受字節。但你想要做的是formatSizeUnits(4000)。這是錯誤的和預期的輸出是3.91 MB因爲它是由1024分,而不是與1000的正確方法是調用像

formatSizeUnits(4000*1024) // beacuse 4000 is in KB and convert into bytes 

見下面的代碼片段,以得到正確的答案

function formatSizeUnits(bytes){ 
 
     if  (bytes>=1073741824) {bytes=(bytes/1073741824).toFixed(2)+' GB';} 
 
     else if (bytes>=1048576) {bytes=(bytes/1048576).toFixed(2)+' MB';} 
 
     else if (bytes>=1024)  {bytes=(bytes/1024).toFixed(2)+' KB';} 
 
     else if (bytes>1)   {bytes=bytes+' bytes';} 
 
     else if (bytes==1)   {bytes=bytes+' byte';} 
 
     else      {bytes='0 byte';} 
 
     return bytes; 
 
} 
 

 

 
document.write(formatSizeUnits(4000*1024));

相關問題