我现在需要的是根据文件大小转换成带有"Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"单位的格式。
如文件大小数值为3858,需转换成3.78KB。
网上找到一个版本的是采用PHP,代码如下:
 <? php
 function  setupSize( $fileSize ) {    
      $size   =   sprintf ( " %u " ,   $fileSize );
      $sizename   =   array ( "  Bytes " ,   "  KB " ,   "  MB " ,   "  GB " ,   "  TB " ,   "  PB " ,   "  EB " ,   "  ZB " ,   "  YB " );    
      return   round ( $size / pow ( 1024 ,  ( $i   =   floor ( log ( $size ,   1024 )))) ,  3 )  .   $sizename [ $i ];
 } 
 echo  setupSize( ' 200000 ' )
 ?> 
参照上面的代码,在js脚本里写:
  var unitArr = new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");
  var index;
  var srcsize = parseFloat(value);
  var size =Math.round(srcsize/Math.pow(1024,(index=Math.floor(这里求log对数如何转换))),3);查看API,Math有一个方法是log(x)。不过这个是固定底数为e的。
请问在js中有没有可以自定义底数的对数函数?或者大家对这个问题是不是还有其他解答方法?