Как я могу преобразовать числа в научную нотацию?

Я хочу сделать функцию, которая принимает введенное значение и преобразует его в научную нотацию (N x 10^a)

Я пробовал много разных вещей, но я не могу понять это правильно.

пример:

Я ввожу 200. Преобразователь преобразует его в 2 x 10^2

2 ответов


вы можете сделать что-то вроде этого:

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

скрипка: http://jsfiddle.net/Q8avJ/9/


Если вы хотите базовый формат 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. Так что знайте об этом.