Я хочу удалить знак числа в JavaScript. Вот тестовые случаи, которые я уже исследованные в JSPerf (http://jsperf.com/remove-sign-from-number)Быстрый и экономичный способ удаления знака оного в JavaScript
if(n < 0) n *= -1;
if(n < 0) n = -n;
n = Math.abs(n)
(n < 0) && (n *= -1)
(n < 0) && (n = -n)
n = Math.sqrt(n*n)
Согласно этим тестам: if(n < 0) n *= -1
кажется хорошим решением.
Знаете ли вы, что лучше, сохранить и более эффективный способ сделать это?
Edit 1: Math.sqrt
случай Добавлена Нихилу, но sqrt
, как правило, довольно медленно и в большинстве систем.
Редакция 2: Предложение Яна для побитовых операций может быть быстрее в некоторых случаях, но также будет удалять дробные цифры и, следовательно, не будет работать для меня.
Эксплуатационные характеристики сильно различаются между браузерами. В SeaMonkey «Math.abs» явно превосходит все остальные. На Konqueror побитовое ('if (n <0) n = ~ n + 1') сияет [все версии' && 'все там плохие] и' Math.abs' воняет. В общем, 'if (n <0) n * = -1' и' if (n <0) n = -n' кажутся безопасными, которые нигде не воняют. Одна из проблем с побитовыми операторами состоит в том, что они заставляют число в 32-битное целое число - если 'n' выходит за пределы этого диапазона, поразрядный способ может вызвать мусор. –