为了账号安全,请及时绑定邮箱和手机立即绑定

在JavaScript中将字节大小转换为KB,MB,GB的正确方法

在JavaScript中将字节大小转换为KB,MB,GB的正确方法

海绵宝宝撒 2019-10-05 11:02:15
我通过PHP 将此代码转换为秘密大小(以字节为单位)。现在,我想使用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 bytes"; }  return bytes;}这是正确的方法吗?有更容易的方法吗?
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

const units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];


function niceBytes(x){

  let l = 0, n = parseInt(x, 10) || 0;


  while(n >= 1024 && ++l){

      n = n/1024;

  }

  //include a decimal point and a tenths-place digit if presenting 

  //less than ten of KB or greater units

  return(n.toFixed(n < 10 && l > 0 ? 1 : 0) + ' ' + units[l]);

}

结果:


niceBytes(1)                   // 1 byte

niceBytes(435)                 // 435 bytes

niceBytes(3398)                // 3.3 KB

niceBytes(490398)              // 479 KB

niceBytes(6544528)             // 6.2 MB

niceBytes(23483023)            // 22 MB

niceBytes(3984578493)          // 3.7 GB

niceBytes(30498505889)         // 28 GB

niceBytes(9485039485039445)    // 8.4 PB


查看完整回答
反对 回复 2019-10-05
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

toFixed(n)toPrecision(n)对于所有值都具有一致的精度可能更合适。为了避免尾随零(例如:),bytesToSize(1000) // return "1.00 KB"我们可以使用parseFloat(x)。我建议将最后一行替换为:return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];。与之前的更改相比,结果是: bytesToSize(1000) // return "1 KB"bytesToSize(1100) // return "1.1 KB"bytesToSize(1110) // return "1.11 KBbytesToSize(1111) // also return "1.11 KB"

查看完整回答
反对 回复 2019-10-05
  • 3 回答
  • 0 关注
  • 2224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信