Мені цікаво, як у javascript, якщо мені дали число (скажімо 10000), а потім дали відсоток (скажімо, 35,8%)
як би я визначив, скільки це (наприклад, 3580)
Відповіді:
var result = (35.8 / 100) * 10000;
(Дякую jball за зміну порядку роботи. Я не враховував це).
var
, ні пробіли, але це буде не дуже читабельним чи хорошим кодом, чи не так? : P
var result = pct / 100 * number;
Ваш відсоток, поділений на 100 (щоб отримати відсоток від 0 до 1), помножений на число
35.8/100*10000
Я використовую дві дуже корисні функції 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 / 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;
Важчий шлях (мета навчання):
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);