Je me demande comment, en javascript, on me donne un nombre (disons 10000) puis un pourcentage (disons 35,8%)
comment pourrais-je calculer combien c'est (par exemple 3580)
var result = (35.8 / 100) * 10000;
(Merci jball pour ce changement d'ordre des opérations. Je ne l'ai pas pris en compte).
Votre pourcentage divisé par 100 (pour obtenir le pourcentage entre 0 et 1) par le nombre
35.8/100*10000
Voici ce que je ferais:
// num is your number
// amount is your percentage
function per(num, amount){
return num*amount/100;
}
...
<html goes here>
...
alert(per(10000, 35.8));
J'utilise deux fonctions JS très utiles: http://blog.bassta.bg/2013/05/rangetopercent-and-percenttorange/
function rangeToPercent(number, min, max){
return ((number - min) / (max - min));
}
et
function percentToRange(percent, min, max) {
return((max - min) * percent + min);
}
Si vous voulez passer le% dans le cadre de votre fonction, utilisez l’alternative suivante:
<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>
La meilleure chose à faire est de mémoriser l’équation de la balance de façon naturelle.
Amount / Whole = Percentage / 100
généralement il vous manque une variable, dans ce cas il s'agit du montant
Amount / 10000 = 35.8 / 100
alors vous avez maths au lycée (proportion) à multiple extérieur des deux côtés et intérieur des deux côtés.
Amount * 100 = 358 000
Amount = 3580
Cela fonctionne de la même manière dans toutes les langues et sur le papier. JavaScript ne fait pas exception.
var number = 10000;
var result = .358 * number;
Afin d'éviter complètement les problèmes de virgule flottante, le montant dont le pourcentage est calculé et le pourcentage lui-même doivent être convertis en entiers. Voici comment j'ai résolu ceci:
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
Comme vous pouvez le voir, je:
amount
et dans percent
amount
et percent
en entiers à l'aide de la notation exponentielleL'utilisation de la notation exponentielle a été inspirée par blog de Jack Moore . Je suis sûr que ma syntaxe pourrait être plus courte, mais je voulais être aussi explicite que possible dans mon utilisation des noms de variable et en expliquant chaque étape.
Harder Way (but d'apprentissage):
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
C'est peut-être un peu pédant/redondant avec son casting numérique, mais voici une fonction sûre pour calculer le pourcentage d'un nombre donné:
function getPerc(num, percent) {
return Number(num) - ((Number(percent) / 100) * Number(num));
}
// Usage: getPerc(10000, 25);