美文网首页
JavaScript 字节单位换算函数

JavaScript 字节单位换算函数

作者: erya_he | 来源:发表于2020-01-21 17:10 被阅读0次

业务场景:

内存使用量的展示,数据是以Mb为单位的,接口里是类似"1234567890"这样的数据,不便于用户理解,需要前端转换成"1.15PB"这样的展示。考虑到业务中还会有很多相同的场景,所以就写了一个工具函数:

/**
 * byte单位换算
 * @param originNum 要换算单位的数
 * @param basic 传入num的基础单位 默认是MB
 * @param pointIndex 保留小数位数 默认保留两位小数
 * @param symbols 单位列表
 * @returns {String}
 * @example byteConvert(25088.00,'Mb',2) 24.50GB
 */
export function byteConvert (originNum = 0, basic = 'MB', pointIndex = 2, symbols = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB']) {
  if (isNaN(Number(originNum)) || Number(originNum) === 0) return 0 + basic;
  const num = Number(originNum) > 0 ? Number(originNum) : Number(-1 * originNum);
  const exp = Math.floor(Math.log(num)/Math.log(1024)); // 利用换底公式
  const index = symbols.findIndex((ele) => ele === basic);
  const symbolsLength = symbols.length;
  let number,unit;
  if(index < 0) {
      throw new Error(`传入单位必须是${symbols}中的值`);
  } else if ((exp + index) > symbolsLength - 1){
      number = (num / Math.pow(1024, symbolsLength - 1 - index)).toFixed(pointIndex);
      unit = symbols[symbolsLength - 1];
  } else {
      number = (num / Math.pow(1024, exp)).toFixed(pointIndex);
      unit = symbols[exp + index];
  }
  const outputNum = Number(originNum) > 0 ? Number(number).toLocaleString() : ('-' + Number(number).toLocaleString());
  return outputNum + ' ' + unit;
}

相关文章

  • JavaScript 字节单位换算函数

    业务场景: 内存使用量的展示,数据是以Mb为单位的,接口里是类似"1234567890"这样的数据,不便于用户理解...

  • JavaScript 字节单位换算函数【详解】

    前言:我们在日常开发中,经常会遇到字节单位换算的场景。一般用简单的除法来计算时,都会遇到计算精度的问题。有关 Ja...

  • Js字节单位换算函数

    字节转换为单位大小 单位大小转换为字节

  • 编码

    编码单位单位换算bit(位)最小单位Byte(字节)一字节等于8bit,英语表示是1 Byte=8 bitsKB1...

  • 逆向开发--汇编基础

    1. 单位换算 字节:byte,1个字节由8bit组成,可以存储在8位寄存器中2个16进制位表示1字节 字:wor...

  • 单位换算

    一、分类 1、长度单位、面积单位、体积(容积)单位 巧记:记长度单位,平方零翻倍,立方零3倍 特殊:1公顷=100...

  • 单位换算

    张长占 济南市民生大街小学 谈话导入:这几年学了哪些单位换算? 生:时间,长度,体积,容积… 想想单位换算你们都是...

  • 单位换算

    换算公式 面 积 换 算 1平方公里(km2)=100公顷(ha)=247.1英亩(acre)=0.386平方英里...

  • 单位换算

    一公斤=2斤,一斤=500克,一两=50克,一斤=10两 一公里=2里,1里=500米

  • bit Byte Kb KB之间的关系

    单位换算 bit就是位,也叫比特位,是计算机表示数据最小的单位。B是Byte的缩写,意思是字节;b是bit的缩写,...

网友评论

      本文标题:JavaScript 字节单位换算函数

      本文链接:https://www.haomeiwen.com/subject/nqjezctx.html