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)?
Antworten:
var result = (35.8 / 100) * 10000;
(Danke jball für diese Änderung der Reihenfolge der Operationen. Ich habe es nicht berücksichtigt).
var
noch Whitspace, aber es wäre nicht sehr lesbar oder guter Code, oder? : P
var 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
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));
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);
}
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>
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.
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
und percent
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.
var number = 10000;
var result = .358 * number;
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);
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
var number=10000; alert(number*0.358);