【问题标题】:How can I convert numbers into scientific notation?如何将数字转换为科学计数法?
【发布时间】:2012-06-22 21:05:08
【问题描述】:

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

我尝试了很多不同的方法,但我似乎无法做到正确。

例子:

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

【问题讨论】:

  • 还想要更具体的信息。即最大值是多少位有效数字? 2,121,212 -> 2 x 10^6 或 2.1 x 10^6 等等?我猜“切断”是什么

标签: javascript html math scientific-notation


【解决方案1】:

你可以这样做:

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

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

【讨论】:

  • 哇,我不知道这个存在:)
  • 哇,我也不知道这个存在:)
  • 太棒了!但是有没有办法让它以 N x 10^a 的形式出现?不过,我仍然可以做到这一点!
  • @Samar 您可以根据需要使用字符串替换将 e 替换为 x 10,即使它们的含义相同
  • toExponential 也采用digits 参数,如toFixed,来控制小数部分(e 之前)的位数! `
【解决方案2】:

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

m x 10n

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

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。因此请注意这一点。

【讨论】:

    【解决方案3】:

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

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

    在下面的 sn-p 中,我将数字分配给 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^'));

    在这个 sn-p 中,我使用 RegExp 替换 ee+(在正指数的情况下)。

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

    【讨论】:

    • 谢谢,这正是我想要的。很惊讶这不是标准库的一部分。你也可以像这样使用无点样式:num.toExponential().split('e').map(Number)
    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2022-01-04
    • 2014-07-01
    相关资源
    最近更新 更多