Операции с процентами в переменных

Есть переменная p = 2 мне нужно отнять от нее 50%, как это можно реализовать, и можно ли это сделать со строкой? Спасибо.


Ответы (2 шт):

Автор решения: Дмытрык

const persent = '25%';
let value = 2;
value = value - (value / 100 * parseFloat(persent));
console.log(value)

→ Ссылка
Автор решения: MoloF

Number.prototype.percent = function(percent = 100) {
	const result = this.valueOf() / 100 * Math.abs(parseFloat(percent));
	return Math.sign(parseFloat(percent)) === -1 ? this.valueOf() - result : result;
};

const num = 200;
const halfNum = num.percent('50%');
const quarterNum = num.percent(25);
const x2Num = num.percent(200);
const takeQuarterNum = num.percent(-25);
//const takeQuarterNum = num.percent('-25%');


console.log({
  'Число': num,
  'Половина от числа': halfNum,
  'Четверть от числа': quarterNum,
  'В 2 раза больше': x2Num,
  'Отнять четверть от числа': takeQuarterNum
});

Решил более развёрнуто оставить функцию для вычисления процента от числа. Взял готовое вычисление у Дмытрыка, и решил добавить в прототип новую функцию, которая будет возвращать % от числа.

Свойство Number.prototype представляет прототип конструктора.

В прототип поместил функцию возвращающую процент от числа:

function(percent = 100) {
    return this.valueOf() / 100 * parseFloat(percent);
};

this.valueOf() - возвращает задействованное число.

Ну а дальше можно использовать функцию в любом числе.

(число).функция(параметр)

(200).percent(50) - от числа 200, взять 50%.


UPD:

Обновил ответ в соответствии с вопросом.

Теперь если вы хотите отнять % от числа, то поставьте перед параметром минус и сможете получить число, от которого отняли какой-то процент.

(Увидел у Дмытрыка правку и решил обновить свой ответ).

→ Ссылка