猿问

在线等!格式化文件大小函数不明白?求老司机指点!

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);这句
BIG阳
浏览 358回答 2
2回答

慕标5832272

index是判断srcsize是1024的几次方的。log1024(srcsize)=ln(srcsize)/ln(1024)=Math.log(srcsize)/Math.log(1024)因为js里面没有直接log1024(srcsize)这种函数,所以要转化成Math.log来算

皈依舞

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次方。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答