Мне интересно, как в javascript, если мне дали число (скажем, 10000), а затем дали процент (скажем, 35,8%)
как бы я вычислил, сколько это стоит (например, 3580)
javascript
math
Hailwood
источник
источник
var number=10000; alert(number*0.358);
Ответы:
var result = (35.8 / 100) * 10000;
(Спасибо jball за изменение порядка действий. Я не учел ).
источник
var
, ни пробелы, но это будет не очень удобно для чтения или хороший код, не так ли? : Pvar result = pct / 100 * number;
Ваш процент делится на 100 (чтобы получить процент от 0 до 1), умноженный на число
35.8/100*10000
источник
Вот что бы я сделал:
// num is your number // amount is your percentage function per(num, amount){ return num*amount/100; } ... <html goes here> ... alert(per(10000, 35.8));
источник
Я использую две очень полезные JS-функции: http://blog.bassta.bg/2013/05/rangetopercent-and-percenttorange/
function rangeToPercent(number, min, max){ return ((number - min) / (max - min)); }
и
function percentToRange(percent, min, max) { return((max - min) * percent + min); }
источник
Если вы хотите передать% как часть своей функции, вам следует использовать следующую альтернативу:
<script> function fpercentStr(quantity, percentString) { var percent = new Number(percentString.replace("%", "")); return fpercent(quantity, percent); } function fpercent(quantity, percent) { return quantity * percent / 100; } document.write("test 1: " + fpercent(10000, 35.873)) document.write("test 2: " + fpercentStr(10000, "35.873%")) </script>
источник
Лучше всего запомнить уравнение баланса естественным образом.
Amount / Whole = Percentage / 100
Обычно у вас не хватает одной переменной, в данном случае это Amount.
Amount / 10000 = 35.8 / 100
тогда у вас есть математика средней школы (пропорция) к множеству внешних с обеих сторон и внутренней с обеих сторон.
Amount * 100 = 358 000 Amount = 3580
Он работает одинаково на всех языках и на бумаге. JavaScript не исключение.
источник
Чтобы полностью избежать проблем с плавающей запятой, сумму, процент которой вычисляется, и сам процент необходимо преобразовать в целые числа. Вот как я решил это:
function calculatePercent(amount, percent) { const amountDecimals = getNumberOfDecimals(amount); const percentDecimals = getNumberOfDecimals(percent); const amountAsInteger = Math.round(amount + `e${amountDecimals}`); const percentAsInteger = Math.round(percent + `e${percentDecimals}`); const precisionCorrection = `e-${amountDecimals + percentDecimals + 2}`; // add 2 to scale by an additional 100 since the percentage supplied is 100x the actual multiple (e.g. 35.8% is passed as 35.8, but as a proper multiple is 0.358) return Number((amountAsInteger * percentAsInteger) + precisionCorrection); } function getNumberOfDecimals(number) { const decimals = parseFloat(number).toString().split('.')[1]; if (decimals) { return decimals.length; } return 0; } calculatePercent(20.05, 10); // 2.005
Как видите, я:
amount
вpercent
amount
иpercent
в целые числа, используя экспоненциальную записьИспользование экспоненциальной записи было вдохновлено сообщением в блоге Джека Мура . Я уверен, что мой синтаксис мог бы быть короче, но я хотел быть как можно более ясным в использовании имен переменных и объяснении каждого шага.
источник
var number = 10000; var result = .358 * number;
источник
Это может быть немного педантично / избыточно с его числовым преобразованием, но вот безопасная функция для вычисления процента от заданного числа:
function getPerc(num, percent) { return Number(num) - ((Number(percent) / 100) * Number(num)); } // Usage: getPerc(10000, 25);
источник
Harder Way (учебная цель):
var number = 150 var percent= 10 var result = 0 for (var index = 0; index < number; index++) { const calculate = index / number * 100 if (calculate == percent) result += index } return result
источник