如何将数字转换为科学记数法?

IT技术 javascript html math scientific-notation
2021-03-19 13:14:47

我想制作一个接受输入值并将其转换为科学记数法 (N x 10^a) 的函数

我尝试了很多不同的东西,但我似乎无法做对。

例子:

我输入 200。转换器将其转换为 2 x 10^2

3个回答

你可以这样做:

a = 200
a.toExponential(); //output 2e+2

小提琴:http : //jsfiddle.net/Q8avJ/9/

@Samar 如果需要,您可以使用字符串替换将 e 替换为 x 10,即使它们的含义相同
2021-04-20 13:14:47
哇,我不知道这存在:)
2021-04-22 13:14:47
toExponential还需要一个digits参数,如toFixed, 来控制小数部分(在 之前e)的位数`
2021-05-03 13:14:47
惊人的!但是有没有办法让它变成 N x 10^a 的形式?不过,我仍然可以做到这一点!
2021-05-05 13:14:47
哇,我也不知道这存在:)
2021-05-16 13:14:47

在某些时候,我想使用系数和指数作为数字。

如果你想这样做,你可以使用toExponential函数,拆分字符串并将数组的项转换为数字。

在以下代码段中,我将数字分配给numInSciNot对象并以所需格式打印它们。

const num = 200;
const numInSciNot = {};
[numInSciNot.coefficient, numInSciNot.exponent] =
  num.toExponential().split('e').map(item => Number(item));
 
console.log(`${numInSciNot.coefficient} x 10^${numInSciNot.exponent}`);

如果您不想将它们用作数字,则可以使用replace

const num = 200;
 
console.log(num.toExponential().replace(/e\+?/, ' x 10^'));

在这个片段中,我使用 RegExp 来替换eor e+(在正指数的情况下)。

如果要指定小数点后的位数,可以toExponential(NumberOfDigits)在上面的例子中使用。

谢谢,这正是我想要的。惊讶这不是标准库的一部分。您还可以使用像这样的无点样式:num.toExponential().split('e').map(Number)
2021-05-05 13:14:47

如果你想要一个像这样的 base 10 格式:

×10 ^ Ñ

然后你可以使用这样的函数:

function writeScientificNum(p_num, p_precision) {
    var n = Math.round(Math.log10(a));
    var m = (p_num * (Math.pow(10,Math.abs(n)))).toFixed(p_precision);
    document.getElementById("outputTxt").innerHTML = m.toString() + ' x 10<sup>' + n.toString() + '</sup>';
}

测试一下:http : //jsfiddle.net/u1hd4zm9/

唯一奇怪的是 toFixed 方法(至少在 Chrome 中)不会将精确的一半向上取整,而是向下取整。例如,如果您运行此代码:

var test = 2.55;
alert(test.toFixed(1));

它会像您期望的那样打印“2.5”而不是“2.6”。但是,如果您运行此代码:

var test = 2.5;
alert(test.toFixed(0));

它将打印 3。所以要注意这一点。