【问题标题】:how to convert kilobytes to megabytes in javascript [duplicate]如何在javascript中将千字节转换为兆字节[重复]
【发布时间】:2016-06-08 00:03:42
【问题描述】:

如何在 javascript 中将 4000 KB 转换为 4 MB?

我试过了

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

【问题讨论】:

  • 使用Math.round(bytes/1024)+' KB';
  • 4000 KB 通常不被视为等于 4MB - 尽管有例外情况适用。如果您希望您的函数是这样的异常,请将除数分别替换为 1000000000、1000000 和 1000
  • 可能你的意思是4kb而不是4mb

标签: javascript


【解决方案1】:

你的函数是正确的。它只接受字节。但是你想做的是formatSizeUnits(4000)。这是错误的,预期的输出是3.91 MB,因为它除以 1024 而不是 1000。正确的方法是像这样调用

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

看下面的sn-p得到正确答案

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));

【讨论】:

    最近更新 更多