Javascript 关于单位转换成[B,Kb,Mb],我不知道';我不知道如何使用Math.log()

Javascript 关于单位转换成[B,Kb,Mb],我不知道';我不知道如何使用Math.log(),javascript,Javascript,代码如下 function formatBytes(bytes,decimals) { if(bytes == 0) return '0 Byte'; var k = 1000; // or 1024 for binary var dm = decimals + 1 || 3; var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; var i = Math.floor(Math.

代码如下

function formatBytes(bytes,decimals) {
   if(bytes == 0) return '0 Byte';
   var k = 1000; // or 1024 for binary
   var dm = decimals + 1 || 3;
   var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
   var i = Math.floor(Math.log(bytes) / Math.log(k));
   return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}
但是我不知道如何使用Math.log()

函数的作用是:返回 号码,就是

∀x> 0,Math.log(x)=ln(x)=唯一的y,使得e^y=x

var i=Math.floor(Math.log(字节)/Math.log(k))

我将是尺寸索引



例如:bytes<1000=>i=0,因为floor方法将数字向下舍入到最接近的整数。

考虑大小单位bytes、KB、MB、GB等的连续幂为1024,如1024^0、1024^1、1024^2等

因此,要知道对任意数量的字节使用哪个单位,需要计算其下1024的最高幂

正数基2对数的整数部分ln2(字节)是其下2的幂,因此获得数字下1024的幂的简单方法是将其基2对数除以10,因为1024是2^10,并取整数部分

这就产生了一个函数

function p1024( n) { return Math.floor(Math.log2( n) / 10);}
用作单位缩写数组的索引

张贴的代码使用了数学知识,即
ln2(n)/10
相当于
ln(n)/ln(1024)
,其中
ln
是自然对数函数,
ln2
是以2为底对数的函数



在Javascript中,Math是一个全局对象,所有Javascript代码都可以访问它。在Java中,您可能需要在使用前导入
Java.lang.Math
Java.lang.*
(这里不是Java专家)。

您能在帖子中添加更多信息吗?什么是预期的行为,什么不适合你?谢谢你的回答!