Ich frage mich, wie in Javascript, wenn ich eine Zahl (sagen wir 10000) und dann einen Prozentsatz (sagen wir 35,8%) bekommen habe.
Wie würde ich herausfinden, wie viel das ist (zB 3580)?
javascript
math
Hagelholz
quelle
quelle
var number=10000; alert(number*0.358);
Antworten:
var result = (35.8 / 100) * 10000;
(Danke jball für diese Änderung der Reihenfolge der Operationen. Ich habe es nicht berücksichtigt).
quelle
var
noch Whitspace, aber es wäre nicht sehr lesbar oder guter Code, oder? : Pvar result = pct / 100 * number;
Ihr Prozentsatz geteilt durch 100 (um den Prozentsatz zwischen 0 und 1 zu erhalten) mal durch die Zahl
35.8/100*10000
quelle
Das würde ich tun:
// num is your number // amount is your percentage function per(num, amount){ return num*amount/100; } ... <html goes here> ... alert(per(10000, 35.8));
quelle
Ich verwende zwei sehr nützliche JS-Funktionen: http://blog.bassta.bg/2013/05/rangetopercent-and-percenttorange/
function rangeToPercent(number, min, max){ return ((number - min) / (max - min)); }
und
function percentToRange(percent, min, max) { return((max - min) * percent + min); }
quelle
Wenn Sie% als Teil Ihrer Funktion übergeben möchten, sollten Sie die folgende Alternative verwenden:
<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>
quelle
Das Beste ist, sich die Gleichgewichtsgleichung auf natürliche Weise zu merken.
Amount / Whole = Percentage / 100
In der Regel fehlt eine Variable. In diesem Fall handelt es sich um Betrag
Amount / 10000 = 35.8 / 100
Dann haben Sie High School Mathe (Verhältnis) zu mehreren äußeren von beiden Seiten und inneren von beiden Seiten.
Amount * 100 = 358 000 Amount = 3580
Es funktioniert in allen Sprachen und auf Papier gleich. JavaScript ist keine Ausnahme.
quelle
Um Gleitkommaprobleme vollständig zu vermeiden, müssen der Betrag, dessen Prozentsatz berechnet wird, und der Prozentsatz selbst in Ganzzahlen umgewandelt werden. So habe ich das gelöst:
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
Wie Sie sehen können, ich:
amount
als auch inpercent
amount
undpercent
in Ganzzahlen in ExponentialschreibweiseDie Verwendung der Exponentialnotation wurde von Jack Moores Blogbeitrag inspiriert . Ich bin mir sicher, dass meine Syntax kürzer sein könnte, aber ich wollte so explizit wie möglich mit Variablennamen umgehen und jeden Schritt erklären.
quelle
var number = 10000; var result = .358 * number;
quelle
Es mag mit seiner numerischen Umwandlung etwas pedantisch / redundant sein, aber hier ist eine sichere Funktion, um den Prozentsatz einer bestimmten Zahl zu berechnen:
function getPerc(num, percent) { return Number(num) - ((Number(percent) / 100) * Number(num)); } // Usage: getPerc(10000, 25);
quelle
Harder Way (Lernzweck):
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
quelle