Есть ли способ обрезать номера научных обозначений в Javascript? - PullRequest
5 голосов
/ 28 января 2011

Как вы все знаете, так как это одна из самых популярных тем на SO, у меня проблемы с ошибками округления (на самом деле это не ошибки, я хорошо это знаю).Вместо объяснения своей точки зрения я приведу пример того, какие возможные числа у меня есть и какой ввод я хочу получить:

Допустим,

var a = 15 * 1e-9;
alert(a)

выходы

1.5000000000000002e-8

Я хочу получить вместо этого 1.5e-8, но я не могу просто умножить на 10e8, округлить и разделить на 10e8, потому что я не знаю, будет ли это е-8 или е-45 или что-то ещеelse.

Таким образом, я хочу получить часть 1.5000002, применить toFixed(3) и вернуть экспонентную часть.

Я могу преобразовать в строку и разобрать, но этопросто не кажется правильным ...

Есть идеи?


(заранее прошу прощения, если вы считаете, что это один из множества дубликатов, но я не смог найти похожий вопрос, только связанные)

Гаэль

Ответы [ 2 ]

11 голосов
/ 28 января 2011

Вы можете использовать метод toPrecision:

var a = 15 * 1e-9;
a.toPrecision(2); // "1.5e-8"
0 голосов
/ 28 января 2011

Если вы занимаетесь научной работой и вам необходимо округлить значимые цифры: Округление до произвольного числа значащих цифр

...