Zastanawiam się, jak w javascript, gdybym dostał liczbę (powiedzmy 10000), a potem otrzymałem procent (powiedzmy 35,8%)
jak mam obliczyć, ile to jest (np. 3580)
javascript
math
Hailwood
źródło
źródło
var number=10000; alert(number*0.358);
Odpowiedzi:
var result = (35.8 / 100) * 10000;
(Dziękuję jball za tę zmianę kolejności operacji. Nie brałem tego pod uwagę).
źródło
var
, ani białych spacji, ale nie byłoby to zbyt czytelne lub dobry kod, prawda? : Pvar result = pct / 100 * number;
Twój procent podzielony przez 100 (aby uzyskać wartość procentową od 0 do 1) razy przez liczbę
35.8/100*10000
źródło
Oto, co bym zrobił:
// num is your number // amount is your percentage function per(num, amount){ return num*amount/100; } ... <html goes here> ... alert(per(10000, 35.8));
źródło
Używam dwóch bardzo przydatnych funkcji JS: http://blog.bassta.bg/2013/05/rangetopercent-and-percenttorange/
function rangeToPercent(number, min, max){ return ((number - min) / (max - min)); }
i
function percentToRange(percent, min, max) { return((max - min) * percent + min); }
źródło
Jeśli chcesz przekazać% jako część swojej funkcji, powinieneś użyć następującej alternatywy:
<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>
źródło
Najlepiej zapamiętać równanie równowagi w naturalny sposób.
Amount / Whole = Percentage / 100
zwykle brakuje jednej zmiennej, w tym przypadku jest to kwota
Amount / 10000 = 35.8 / 100
wtedy masz matematykę w szkole średniej (proporcje) do wielu zewnętrznych z obu stron i wewnętrznych z obu stron.
Amount * 100 = 358 000 Amount = 3580
Działa tak samo we wszystkich językach i na papierze. JavaScript nie jest wyjątkiem.
źródło
Aby w pełni uniknąć problemów z liczbami zmiennoprzecinkowymi, kwotę, której procent jest obliczany, i sam procent należy przekonwertować na liczby całkowite. Oto, jak rozwiązałem ten problem:
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
Jak widać, ja:
amount
ipercent
amount
ipercent
na liczby całkowite, używając notacji wykładniczejUżycie notacji wykładniczej zostało zainspirowane postem na blogu Jacka Moore'a . Jestem pewien, że moja składnia mogłaby być krótsza, ale chciałem być jak najbardziej jednoznaczny w używaniu nazw zmiennych i wyjaśnianiu każdego kroku.
źródło
var number = 10000; var result = .358 * number;
źródło
Może to być nieco pedantyczne / nadmiarowe z rzutowaniem numerycznym, ale oto bezpieczna funkcja do obliczania procentu podanej liczby:
function getPerc(num, percent) { return Number(num) - ((Number(percent) / 100) * Number(num)); } // Usage: getPerc(10000, 25);
źródło
Harder Way (cel uczenia się):
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
źródło