📜  js 数字到科学计数法 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:02.384000             🧑  作者: Mango

JS 数字到科学计数法 - Javascript

在 Javascript 中,当数字非常大或非常小的时候,我们可以将其转换为科学计数法。下面是一个可以将数字转换为科学计数法的函数。

/**
 * 将数字转换为科学计数法
 * @param {number} num - 需要转换的数字
 * @param {number} [digits=2] - 保留的小数位数,默认为 2
 * @return {string} - 科学计数法表示的字符串
 */
function toScientificNotation(num, digits = 2) {
  // 如果数字非常小,则可以直接返回 0,因为小于 1e-6 的数字可以直接视为 0
  if (Math.abs(num) < 1e-6) {
    return '0';
  }
  // 指数位数,例如 1234 会被转换为 1.234e+3,因此指数为 3
  const exponent = Math.floor(Math.log10(Math.abs(num))) + 1;
  // 基数部分,保留 digits 位小数
  const base = (num / Math.pow(10, exponent)).toFixed(digits);
  // 如果 base 为 10,则需要将其转换为 1.0,否则会出现 10e+3 的情况
  const baseStr = base === '10' ? '1.0' : base;
  // 返回科学计数法的字符串表示
  return `${baseStr}e${exponent}`;
}
使用示例
const num1 = 12345;
console.log(toScientificNotation(num1)); // 输出:1.23e+4

const num2 = 0.0000123;
console.log(toScientificNotation(num2, 3)); // 输出:1.23e-5

const num3 = 0.00000000123;
console.log(toScientificNotation(num3)); // 输出:0
解释说明
  1. 首先,判断数字是否非常小,如果是,则直接返回 0。
  2. 获取数字的指数位数,即通过对数函数 log10 取整得到。
  3. 计算数字的基数部分,并保留指定的小数位数。
  4. 如果数字的基数部分为 10,需要将其转换为 1.0,避免出现 10e+3 的情况。
  5. 将数字的基数部分和指数部分组合成科学计数法的字符串表示。