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

关于格式化文件大小函数的一些疑问

关于格式化文件大小函数的一些疑问

慕容3067478 2019-05-06 21:47:04
functionrenderSize(value){if(null==value||value==''){return"0Bytes";}varunitArr=newArray("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");varindex=0,srcsize=parseFloat(value);index=Math.floor(Math.log(srcsize)/Math.log(1024));varsize=srcsize/Math.pow(1024,index);//保留的小数位数size=size.toFixed(2);returnsize+unitArr[index];}想知道为什么这里边index=Math.floor(Math.log(srcsize)/Math.log(1024));index可以决定是什么单位?还有varsize=srcsize/Math.pow(1024,index);这句
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

index是判断srcsize是1024的几次方的。
log1024(srcsize)=ln(srcsize)/ln(1024)=Math.log(srcsize)/Math.log(1024)
因为js里面没有直接log1024(srcsize)这种函数,所以要转化成Math.log来算
                            
查看完整回答
1 反对 回复 2019-05-06
?
慕斯709654

TA贡献1840条经验 获得超5个赞

Math.floor(Math.log(srcsize)/Math.log(1024))计算srcsize是1024的多少次方,当然可以决定其单位,我们的kb,mb不是以1024的次方数算的吗?byte是1024的0次方,kb是1024的一次放,mb是2次方,gb是3次方
varsize=srcsize/Math.pow(1024,index);这个是除以1024的n次方,因为单位本身就是1024的n次方。
                            
查看完整回答
反对 回复 2019-05-06
  • 2 回答
  • 0 关注
  • 474 浏览
慕课专栏
更多

添加回答

举报

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