📅  最后修改于: 2023-12-03 15:17:02.384000             🧑  作者: Mango
在 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
log10
取整得到。10e+3
的情况。