Преобразование отрицательного числа в положительное в JavaScript

Есть ли математическая функция в JavaScript, которая преобразует числа в положительное значение?

Ответ 1

Вы можете использовать это...

Math.abs(x)

Math​.abs() | MDN

Ответ 2

Как насчет x *= -1? Мне нравится его простота.

Ответ 3

Math.abs(x), или если вы определенные, значение будет отрицательным до того, как преобразование просто добавит обычный знак минуса: x = -x.

Ответ 4

Знак минус (-) может преобразовывать положительные числа в отрицательные числа и отрицательные числа в положительные числа. x=-y - визуальный сахар для x=(y*-1).

var y = -100;
var x =- y;

Ответ 5

unsigned_value = Math.abs(signed_value);

Ответ 6

var posNum = (num < 0) ? num * -1 : num; // if num is negative multiple by negative one ... 

Я нахожу это решение понятным.

Ответ 7

Если вы хотите написать интересный код, который никто еще не сможет обновить, попробуйте следующее:

~ --x

Ответ 8

Отрицательный к положительному

var X = -10 ;
var number = Math.abs(X);     //result 10

От положительного к отрицательному

var X = 10 ;
var number = (X)*(-1);       //result -10

Ответ 9

Я знаю, что это немного поздно, но для людей, борющихся с этим, вы можете использовать

Преобразование отрицательного в положительное

let x = -54;
let result = Math.abs(x);

Для преобразования положительного в отрицательное

let x = 54;
let result = -Math.abs(x)

Или вы могли бы просто сделать этот короткий метод.

Для преобразования положительных в отрицательные и наоборот

let x = -23;
let result = -(23)

Ответ 10

Умножение на (-1) - самый быстрый способ преобразования отрицательного числа в положительное. Но вы должны быть осторожны, чтобы не преобразовать мою ошибку положительного числа в отрицательное! Поэтому необходима дополнительная проверка...

Тогда Math.abs, Math.floor и parseInt самый медленный.

enter image description here

https://jsperf.com/test-parseint-and-math-floor-and-mathabs/1

Ответ 11

Я сделал что-то подобное сам.

num<0?num*=-1:'';

Он проверяет, является ли число отрицательным, а если оно есть, умножьте с -1 Это возвращает значение, оно зависит от вас, если вы его захватите. Если вы хотите что-то присвоить, вы должны, вероятно, сделать что-то вроде:

var out = num<0?num*=-1:num; //I think someone already mentioned this variant.

Но это действительно зависит от вашей цели. Для меня это было просто, сделать его положительным, если отрицательным, иначе ничего не делать. Отсюда и "код". В этом случае я использовал третичный оператор, которого я хотел, вполне может быть:

if(num<0)num*=-1;

Я видел побитовое решение здесь и хотел прокомментировать его тоже.

~--num; //Drawback for this is that num original value will be reduced by 1

Эта душа очень модно, по моему мнению, мы могли бы переписать ее так:

~(num = num-1);

В простых терминах мы берем отрицательное число, отбираем его и затем побиваем его инвертируем. Если бы мы поразрядно перевернули его, мы бы получили значение 1 слишком мало. Вы также можете сделать это:

~num+1; //Wont change the actual num value, merely returns the new value

Это сделает то же самое, но сначала инвертирует, а затем добавит 1 к положительному числу. Хотя вы не можете сделать это:

~num++; //Wont display the right value.

Это не будет работать из-за precedence, операторы постфикса, такие как num++, будут оцениваться до ~ и префикс причины ++num не работает, даже если он имеет тот же приоритет, что и побитовое NOT (~), потому что он оценивается справа налево. Я попытался поменять их, но кажется, что префикс немного по сравнению с побитовым NOT. +1 будет работать, потому что "+" имеет более высокий приоритет и будет оценен позже.

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

Мои надежды на то, что этот пост не отошел от первоначального вопроса.:/

Ответ 12

Мой минимальный подход

Для преобразования отрицательного числа в положительное и наоборот

var num = -24;
num -= num*2;
console.log(num)
// result = 24

Ответ 13

JavaScript - без использования функций:

var x=-9;
var x=((x*x)**0.5);
console.log(x);  

Ответ 14

Вы можете использовать оператор ~, который логически преобразует число в отрицательный и добавляет 1 к отрицательному:

var x = 3;
x = (~x + 1);
console.log(x)
// result = -3

Ответ 15

Я знаю другой способ сделать это. Эта техника работает с негативного на позитивное и наоборот

var x = -24;
var result = x * -1;

Наоборот:

var x = 58;
var result = x * -1;

ЖИВОЙ КОД:

// NEGATIVE TO POSITIVE: ******************************************
var x = -24;
var result = x * -1;
console.log(result);

// VICE VERSA: ****************************************************
var x = 58;
var result = x * -1;
console.log(result);

// FLOATING POINTS: ***********************************************
var x = 42.8;
var result = x * -1;
console.log(result);

// FLOATING POINTS VICE VERSA: ************************************
var x = -76.8;
var result = x * -1;
console.log(result);

Ответ 16

Для функционального программирования у Рамды есть хороший метод для этого. Тот же метод работает, переходя от положительного к отрицательному и наоборот.

https://ramdajs.com/docs/#negate

Ответ 17

Если вы хотите, чтобы число всегда было положительным, независимо от того, что вы можете сделать это.

function toPositive(n){
    if(n < 0){
        n = n * -1;
    }
    return n;
}
var a = toPositive(2);  // 2
var b = toPositive(-2); // 2

Вы также можете попробовать это, но я не рекомендую это:

function makePositive(n){
    return Number((n*-n).toString().replace('-','')); 
}
var a = makePositive(2);  // 2
var b = makePositive(-2); // 2

Проблема в том, что вы можете изменить число на отрицательное, затем преобразовать в строку и удалить - из строки, а затем преобразовать обратно в int. Что, я думаю, потребует больше обработки, чем просто использование другой функции.

Я проверил это в php, и первая функция работает быстрее, но иногда JS делает некоторые безумные вещи, поэтому я не могу сказать наверняка.